Numpy数组计算
数组之所以重要是因为它允许我们进行批量操作数据并没有任何for循环也被称为向量化。
数组与标量的算术操作
数组与标量的算术操作会把计算参数传递给数组的每一个元素。
两个等尺寸数组的算术操作
两个等尺寸数组的算术操作实际上是逐元素操作。
广播机制
广播机制规则:如果对于每个结尾维度(即从尾部开始的),轴长度都匹配或者长度都是1,两个二维数组就是可以进行广播的。之后,广播会在丢失的或者长度为1的轴上进行。
数组维度不同,结尾轴长度一致
- 在其丢失的轴上进行,也就是0轴广播
数组维度相同,其中有个轴长度为1
- 在其长度为1轴上进行,此处也就是1轴广播
注意
- 维度完全不一致,则无法广播。
数组拼接
- np.vstack() 垂直拼接
- np.hstack() 水平拼接
注意
- 水平拼接需要对应行数一致,垂直拼接需要对应列数一致。
切片
一维索引与切片
同python中的内建数据类型list一致。
注意
- 索引默认从0开始
- 切片左闭右开
- 步长为整数
二维索引与切片
- 二维数组递归方式获取
- 二维数组逗号分隔获取(行,列)
- 取单行 arr[x1,:]
-
- 取连续行 arr[x1:x2,:]
-
- 取分开行 arr[[x1,x2],:]
-
- 取子矩阵 arr[x1:x2,y1:y2]
-
- 取点 arr[[x1,x2],[y1,y2]]
注意
- 当有需要修改数组当中的值时,我们可以直接取值进行赋值。
- 当数组与标量进行比较时,数组当中每个元素与标量进行比较,返回bool值。与此同时,该比较也可以作为索引,被称为布尔索引。比如arr[arr>20]
将条件逻辑作为数组操作
numpy.where()函数是三元表达式 x if condition else y
的向量化版本。
- np.where(condition, [x, y]) # 当满足条件,执行x,否则执行y