numpy(基于Numpy外文文档的学习)

学习目标:

  • Understand the difference between one-, two- and n-dimensional arrays in NumPy;

  • Understand how to apply some linear algebra operations to n-dimensional arrays without using for-loops;(调用一些简单的方法)

  • Understand axis and shape properties for n-dimensional arrays.(axis为维度)

numpy的构成axis和length,其中axis表示为多少维度。length表示里面的元素。如【1,2,1】axis为1,length为3

他有几个属性:

ndarray.ndim      #数组是几维的

ndarray.shape   #去形容数组是什么形状。如二维数组是3*3的数组,

ndarray.size   #算里面装有多少个元素(element)。      

#注意:最内部的一个 []表示一个元素,无论元素内有多少个数字

ndarray.dtype  #数据类型

ndarray.itemsize   #数组占了多少字节

ndarray.data  #一般用不上,

创建array方法

1、通过常规python的list或者set创建数组

import numpy as np
>>> a = np.array([2, 3, 4])
>>> a
array([2, 3, 4])

2、通过特殊函数去创建函数。注意:该初始化的数组后续数据一般需要我们自己去补充

#zero函数。

创建全零的数组

np.zeros((3, 4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

#ones。创建全一的数组

np.ones((2, 3, 4), dtype=np.int16)
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

#empty。仅创建空间。内部数据是内存中未删除干净的。

np.empty((2, 3)) 
array([[3.73603959e-262, 6.02658058e-154, 6.55490914e-260],  # may vary
       [5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

3、numpy中有arange函数。

np.arange(10, 30, 5)
array([10, 15, 20, 25])
>>> np.arange(0, 2, 0.3)  # it accepts float arguments
array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])         

#arange(起始值,终止值,间隔)

输出array

由需要输出的最高维度的最左边的值往右边输出,

a = np.arange(6)                    # 1d array
>>> print(a)
[0 1 2 3 4 5]
>>>
>>> b = np.arange(12).reshape(4, 3)     # 2d array
>>> print(b)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
>>>
>>> c = np.arange(24).reshape(2, 3, 4)  # 3d array
>>> print(c)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

#其中 np.arange(24).reshape(2, 3, 4),相当于做了两个操作。

#首先是np.arange(24),创建了一个一维数组。

#[1,2,3..........,24]

#然后执行了reshape将上面的一维数组转换为了对应的维度的数组

基本操作/对数组内数值的操作:

操作以元素为单位

1、*号和@(or dot函数)的区别

*表示元素内的元素1对1的相乘。

@(dot)则是类似于线性代数的矩阵相乘,如A*B=C,是A的第n行乘以B的第m列,相加得到C(n,m)位置的具体值

2、+=和*=等相关操作,是对原有数组进行修改,而非创建新数组

3、numpy增加了一元运算的功能。(类似于excal中的sum、min功能)

 #    若调用函数则多为整个数组进行操作,  也可以通过指定axis确定操作的凭据。

4、通用函数:numpy中自行封装了一些数学函数,如:sin、cos等

5、numpy中可以使用索引,切片,迭代进行操作

一维函数多维函数(假设三维)
索引仅需提供一个值。如:a【1】需要给出对应个数的维度的值。如:a[1,2,3],才能找到具体的值
切片提供两个值。 a[x:y]

此处有两种办法。

不提供具体的a[x,y,z],其中的x,y,z可以省略一小部分,

或者通过“:”表示截取一部分。

迭代从左至右,由小到大

由小到大,由最低维度开始一个一个增加

迭代中提供了flat作为多维函数的迭代器

对数组shape(形状)的操作:

改变array的形状,

An array has a shape given by the number of elements along each axis

通过指定各个维度需要多少个数,确定形状

a = np.floor(10 * rg.random((3, 4)))
a
array([[3., 7., 3., 4.],
       [1., 4., 2., 2.],
       [7., 2., 4., 9.]])
a.shape    #我们在上面指定了3行4列的数组
(3, 4)




#np.floor()表示向下取整
#rg.random ,其中rg是被重命名的包
#通过import numpy.random as rg 表示
#random会生成0,1的数字,其中3,4表示多少行多少列
reshape、resize、ravel、a.t方法异同:
import numpy as np
import numpy.random as rg
a = np.floor(10 * rg.random((3, 4)))
print(a)
#result:
[[3. 4. 5. 3.]
 [6. 3. 4. 5.]
 [8. 6. 8. 5.]]


a.ravel():
#result:array([3., 4., 5., 3., 6., 3., 4., 5., 8., 6., 8., 5.])
方法内无法写入改变的参数,执行此方法会变成一维顺序输出

#a.reshape():通过在()内写入参数可以改变维度、注:可以写入多个,多少个表示多少维度
#a.t则是转置,如:两行六列————转换为————>六行两列

上述方法,相当于是一个临时结果,如果不用变量接,就是一次性的物品



a.resize(),则是直接对这个数组进行操作,操作结果会保存在原数组内
堆叠多个维度的数组

hstack、vstack、column_stack、concatenate 四个方法

vstack方法,将两个数组自上而下的进行堆叠,(增加的是行数)   numpy.r_()和他同理

hstack和column_stack的异同
hstack/ np.c_()  两个函数效果相同column_stack
通过此方法自左向右增加通过此方法也是自左向右增加

在一维数组时合并之后只会增加数组长度

一维数组会强制转换为二维数组

concate :用于多维度的数组处理

将数组拆分
hspit()函数:对列进行分割

两种填入数据方式

1、将数组均匀的分割成n分

2、将数组按照自己规定的方式进行分割

vsplit(对行进行分割)

使用方法和上述一样。

均匀分割

根据需求分割:

副本与视图:
Not copy at allshallow copydeep copy
复制的东西就是本身复制的东西不是本身,是基于本身,对视图的影响也会回馈到本身复制后两者互相独立,对一方的操作不影响另一方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875168.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外包干了三年,快要废了。。。

先简单说一下自己的情况,普通本科,在外包干了3年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会…

Docker 部署 Redis (图文并茂超详细)

部署 Redis ( Docker ) [Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本 docker pull redis:7.0.12[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器 # 创建 Redis 相关目录 mkdir -p /data/redis/{conf,data,log…

写的一致性问题之失效模式

文章目录 1、先删除redis缓存,再写入mysql:1.1、高并发情况下分析出现的问题 2、先写入mysql,再删除redis缓存 失效模式存在的问题:在事务提交之前可能会有其他读操作重新把旧数据放入redis缓存中 1、先删除redis缓存,…

深入解析全连接层:PyTorch 中的 nn.Linear、nn.Parameter 及矩阵运算

文章目录 数学概念(全连接层,线性层)nn.Linear()nn.Parameter()Q1. 为什么 self.weight 的权重矩阵 shape 使用 ( out_features , in_features ) (\text{out\_features}, \text{in\_features}) (out_features,in_features)而不是 ( in_featur…

Bev pool 加速(2):自定义c++扩展

文章目录 1. c++扩展2. 案例2.1 案例12. 1.1 代码实现(1) c++ 文件(2) setup.py编写(3) python 代码编写2.2 案例22.2.1 模型搭建2.2.2 c++ 扩展实现(1)c++ 扩展代码(2)setup.py编写(3)python 调用c++扩展在bevfusion论文中,将bev_pooling定义为view transform中的效率瓶…

PROTOTYPICAL II - The Practice of FPGA Prototyping for SoC Design

The Art of the “Start” The semiconductor industry revolves around the “start.” Chip design starts lead to more EDA tool purchases, more wafer starts, and eventually to more product shipments. Product roadmaps develop to extend shipments by integrating…

FloodFill算法

文章目录 1. 图像渲染(733)2. 岛屿数量(200)3. 岛屿的最大面积(695)4. 被围绕的区域(130) 1. 图像渲染(733) 题目描述: 算法原理: …

DAY13信息打点-Web 应用源码泄漏开源闭源指纹识别GITSVNDS备份

#知识点 0、Web架构资产-平台指纹识别 1、开源-CMS指纹识别源码获取方式 2、闭源-习惯&配置&特性等获取方式 3、闭源-托管资产平台资源搜索监控 演示案例: ➢后端-开源-指纹识别-源码下载 ➢后端-闭源-配置不当-源码泄漏 ➢后端-方向-资源码云-源码泄漏 …

1、https的全过程

目录 一、概述二、SSL过程如何获取会话秘钥1、首先认识几个概念:2、没有CA机构的SSL过程:3、没有CA机构下的安全问题4、有CA机构下的SSL过程 一、概述 https是非对称加密和对称加密的过程,首先建立https链接需要经过两轮握手: T…

算法提高模板强连通分量tarjan算法

AC代码&#xff1a; #include<bits/stdc.h>using namespace std;typedef long long ll; const int MOD 998244353; const int N 2e5 10;//强联通分量模板 //tarjan算法 vector<int>e[N]; int n, m, cnt; int dfn[N], low[N], ins[N], idx; int bel[N];//记录每…

Redis高可用,Redis性能管理

文章目录 一&#xff0c;Redis高可用&#xff0c;Redis性能管理二&#xff0c;Redis持久化1.RDB持久化1.1触发条件&#xff08;1&#xff09;手动触发&#xff08;2&#xff09;自动触发 1.2 Redis 的 RDB 持久化配置1.3 RDB执行流程(1) 判断是否有其他持久化操作在执行(2) 父进…

Chainlit集成Langchain并使用通义千问实现文生图网页应用

前言 本文教程如何使用通义千问的大模型服务平台的接口&#xff0c;实现图片生成的网页应用&#xff0c;主要用到的技术服务有&#xff0c;chainlit 、 langchain、 flux。合利用了大模型的工具选择调用能力。实现聊天对话生成图片的网页应用。 阿里云 大模型服务平台百炼 API…

R语言统计分析——功效分析3(相关、线性模型)

参考资料&#xff1a;R语言实战【第2版】 1、相关性 pwr.r.test()函数可以对相关性分析进行功效分析。格式如下&#xff1a; pwr.r.test(n, r, sig.level, power, alternative) 其中&#xff0c;n是观测数目&#xff0c;r是效应值&#xff08;通过线性相关系数衡量&#xff0…

NAT技术+代理服务器+内网穿透

NAT技术 IPv4协议中&#xff0c;会存在IP地址数量不充足的问题&#xff0c;所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的&#xff0c;而公网中的IP地址都是唯一的&#xff0c;所以NAT&#xff08;Network Address Translation&…

跨平台集成:在 AI、微服务和 Azure 云之间实现无缝工作流

跨平台集成在现代 IT 架构中的重要性 随着数字化转型的不断加速&#xff0c;对集成各种技术平台的需求也在快速增长。在当今的数字世界中&#xff0c;组织在复杂的环境中执行运营&#xff0c;其中多种技术需要无缝协作。环境的复杂性可能取决于业务的性质和组织提供的服务。具…

Windows更新之后任务栏卡死?桌面不断闪屏刷新?

前言 小白这几天忙于工作&#xff0c;更新就变得异常缓慢。但就算这么忙的情况下&#xff0c;晚上休息的时间还是会给小伙伴们提供咨询和维修服务。 这不&#xff0c;就有一个小伙伴遇到了个很奇怪的问题&#xff1a;电脑Windows更新之后&#xff0c;任务栏点了没反应&#xf…

深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常 2.1 意义 对于C、C程序开发来说&#xff0c;程序员需要维护每一个对象从开始到终结。Java的虚拟自动内存管理机制&#xff0c;让java程序员不需要手写delete或者free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;但是如果…

概念——二连杆与三连杆解算

https://zhuanlan.zhihu.com/p/161348413 跟着这位大佬学的&#xff0c;侵权删除 计划&#xff1a;先行理解概念以及推演过程&#xff0c;然后自行推导一遍&#xff08;确认理解&#xff09;&#xff0c;之后思考如何实际调用&#xff0c;目前在第一步 目录 01-二连杆 1-正…

腾讯云2024年数字生态大会开发者嘉年华(数据库动手实验)TDSQL-C初体验

在2024年9月5-6日&#xff0c;有幸参加了腾讯云举办的2024年数字生态大会开发者嘉年华。 有幸体验了腾讯的多项黑科技和云计算知识。特别是在“增一行代码”互动展区&#xff0c;体验了腾讯云云计算数据库TDSQL-C技术并进行了动手实验。这些技术充分展示了腾讯在云计算的强大实…

关于OceanBase 多模一体化的浅析

在当今多元化的业务生态中&#xff0c;各行各业对数据库系统的需求各有侧重。举例来说&#xff0c;金融风控领域对数据库的高效事务处理&#xff08;TP&#xff09;和分析处理&#xff08;AP&#xff09;能力有着严格要求&#xff1b;游戏行业则更加注重文档数据库的灵活性和性…