import numpy as np
Numpy的主要对象是同质的多维数组array
为了可视化切片过程,我们把二维数组的垂直方向定义为 axis 0 轴,水平方向为 axis 1 轴。
一、创建数组(1)np.array() (2)np.ones()、np.zeros()、np.eye()、np.empty()创建Numpy数组一般有三种方法:
(1)通过传入可迭代对象创建,我将之称为基本方法np.array()
(2)使用Numpy内部功能函数,内部方法
(3)使用特殊的库函数,特殊方法
函数zeros创建一个都是0的数组,
函数ones创建一个都是1的数组,
函数empty创建一个初始内容是0或者垃圾值的数组,这取决于内存当时的状态。
默认情况下,创建的数组的数据类型为float64
np.zeros(3) np.zeros( (3,4) ) np.ones( (2,3,4), dtype=np.int16 ) np.empty( (2,3) ) # 根据当前内存状态的不同,可能会返回未初始化的垃圾数值,不安全。 np.full((3,4), 2.2) # 创建一个全部由2.22组成的数组(3)特殊方法: 1.np.arange() 2.np.linspace()
(3)np.logspace()注意
1.endpoint默认为True:
np.linspace()默认是包含终点的 [start,end]
2.dtype
如果未给出数据类型,则从开始和停止推断数据类型。
推断出的数据类型永远不会是整数;即使参数将生成整数数组,也会选择float。
(4)np.identity() (5)np.random—— .randint() .rand() .stardard_normal()参数设置类似于np.linspace()
1.endpoint默认为True:
np.logspace()默认是包含终点的 [start,end]
2.dtype
如果未给出数据类型,则从开始和停止推断数据类型。
推断出的数据类型永远不会是整数;即使参数将生成整数数组,也会选择float。
3.base默认为10:
相当于10**np.linspace()
(6)np.diag() 二、测试两数组是否相同(相近)——np.isclose(),np.allclose()
三、修改数组 1.np.append()isclose(),allclose()函数来测试两个数组中对应位置上的元素在允许的范围内是否相等。并可以接收绝对误差参数和相对误差参数。
- allclose():返回单个True或False
- isclose():返回若干True/False的列表
返回新数组,不影响原来的数组
注意一维数组和多维数组追加的区别:
n维数组要保持维度,只能追加n维数组,不然报错;
多维数组追加一维数组后,会变成一维数组(axis=None,先展平)
ndarray没有这个方法,而是numpy下的:
多维数组的行追加、列追加和多维追加(axis=0,axis=1……):
2.np.insert()
返回新数组,不影响原来的数组
注意一维数组和多维数组插入的区别:
axis=None时,会先将数组展平
3.切片 四、数组的运算 1.数组与标量 2.数组与数组
3.数组的内积 4.数学函数等长数组:对应元素相加
不等长数组:广播
x = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9])) print(x) print(np.sin(x)) # 一维数组中所有元素求正弦值 print(np.cos(x)) # 二维数组中所有元素求余弦值 print(np.round(np.cos(x))) # 四舍五入 print(np.ceil(x/2)) # 向上取整5.布尔运算 ><== &| np.all() np.any() np.sum() 五、数组排序 1.ndarray.sort(),numpy.sort()
axis=0:列的元素改变位置,垂直方向计算
axis=1:行的元素改变位置,水平方向计算
2.np.argsort(),np.argmax(),np.argmin()
六、赋值、深复制、浅复制(视图)# _表示上一条语句
赋值:对同一对象新建了一个引用
浅复制:共享数据,保存在base数组中(改变数据会互相影响)
深复制:新建完全不同的两个对象,除了初始数据相同
numpy中的array只有赋值受到改变形状的影响;
而视图、切片没有:
七、访问数组 1.下标、切片而在python标准库中,
对list对象——赋值相当于新建引用,切片作右值相当于深复制,作左值相当于视图?
切片没有受到改变值的影响:
a[x1][y1] a[x1,y1] # 输出a[x1][y1] a[[x1,x2,x3],[y1,y2,y3]] # 输出a[x1][y1],a[x2][y2],a[x3][y3] a[x1:x3,y1:y3] # 输出a[x1][y1:y3],a[x2][y1:y3] # 输出a[x1][y1],a[x1][y2],a[x2][y1],a[x2][y2] a[x1] # 输出a[x1][:] a[[x1,x2,x3]] # 输出a[x1][:],a[x2][:],a[x3][:] a[:,[y1,y2,y3]] # 输出a[:][y1],a[:][y2],a[:][y3]
八、改变形状 x.shape x.reshape() x.resize() 1. x.shape x.size
2. x.reshape() 3. x.resize() np.resize()x.shape:返回形状的元组
x.size:元素总个数
注意:array不能引用或被引用
ValueError: cannot resize an array that references or is referenced ...np.resize()则没有这个要求
九、查找、过滤数组元素 np.where() np.piecewise()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)