Python(numpy库常见函数)
迭代数组
nditer 是 NumPy 中的一个强大的迭代器对象,用于高效地遍历多维数组。nditer 提供了多种选项和控制参数,使得数组的迭代更加灵活和高效。
nditer 提供了多种控制参数,用于控制迭代的行为。
order 参数
order 参数用于指定数组的遍历顺序。默认情况下,nditer 按照 C 风格(行优先)遍历数组。
order='F',按照 F 风格(列优先)遍历数组。
C风格:
F风格:
flags 参数
flags 参数用于指定迭代器的额外行为。
-
multi_index: 返回每个元素的多维索引。
-
external_loop: 返回一维数组而不是单个元素,减少函数调用的次数,从而提高性能。
multi_index:
external_loop:
不指定参数:
op_flags 参数用于指定操作数的行为。
-
readonly: 只读操作数。
-
readwrite: 读写操作数。
-
writeonly: 只写操作数。
数组操作
数组变维
reshape:前文已经介绍过。见上篇
1 flat
flat:返回一维数组迭代器,按行返回
2 flatten()
返回一个新的一维数组,不影响原数组形状,可通过order来设置按行返回或按列返回一维数组
当修改由flatten返回的一维数组元素时,不影响原数组的元素
3 ravel()
用于将多维数组转换为一维数组。与 flatten() 不同,ravel() 返回的是原数组的一个视图(view),而不是拷贝。因此,对返回的数组进行修改会影响原数组。
当修改由ravel返回的一维数组元素时
原数组随之改变。
数组转置
语法:
转置(transpose,和ndarray.T)
结果一致。
修改数组维度
expand_dims(arr, axis)
在指定位置插入新的轴(相对于结果数组而言),从而扩展数组的维度
将一维变为二维
多维函数改维度:
axis=0:
从二维数组外层增加一个维度。
axis=1:
从二维数组内层增加维度
squeeze(arr, axis):取值为整数或整数元组,用于指定需要删除的维度所在轴,指定的维度值必须为 1 ,否则将会报错,若为 None,则删除数组维度中所有为 1 的项
此处axis取1会报错,因为axis=1时,可以理解为(指定的是列方向的维度),它不为1.
连接数组
hstack(tup) | tup:可以是元组,列表,或者numpy数组,返回结果为numpy的数组 | 按水平顺序堆叠序列中数组(列方向) |
vstack(tup) | tup:可以是元组,列表,或者numpy数组,返回结果为numpy的数组 | 按垂直方向堆叠序列中数组(行方向) |
hstack函数要求堆叠的数组在垂直方向(行)上具有相同的形状。如果行数不一致,hstack() 将无法执行,并会抛出 ValueError 异常。
vstack() 和 hstack() 要求堆叠的数组在某些维度上具有相同的形状。如果维度不一致,将无法执行堆叠操作。
vstack(tup):
分割数组
hsplit(ary, indices_or_sections):将一个数组水平分割为多个子数组(按列)
vsplit(ary, indices_or_sections):将一个数组垂直分割为多个子数组(按行)
hsplit(ary, indices_or_sections):
如图所示来按列分割数组。
vsplit(ary, indices_or_sections):
如图。
数组元素的增删改查
resize
返回指定形状的新数组
总结:np.resize(arr,(n*m)):改变数组形状,如果原数组中元素数量不够,则从原数组中重复添加元素,直至新数组达到指定形状。
append
在数组的末尾添加值,返回一个一维数组
总结:
np.append(arr,values,axis):将元素values添加到数组arr末尾,
axis默认为None,则将values追加至arr后面,返回一维数组,
若axis=0,则values按行追加至arr后,
若axis=1,则values按列追加至arr后
insert
沿规定的轴将元素值插入到指定的元素前
当插入的values数量与原数组不匹配时,会广播至匹配的数量,再插入
delete
删掉某个轴上的子数组,并返回删除后的新数组
一维数组,直接删除索引的元素
二维数组,若不指定axis,则将二维数组转为一维数组再删除索引的元素
若axis=0,则删除索引的行
若axis=1,则删除索引的列
argwhere
返回数组中非 0 元素的索引,若是多维数组则返回行、列索引组成的索引坐标
如图:返回数组中非零元素的索引(坐标点)。
unique
删掉某个轴上的子数组,并返回删除后的新数组
return_index=True:表示数组元素再原素组中出现的索引位置
return_counts=True:表示数组元素在原数组出现的次数
return_inverse=True:表示原数组元素在新数组中的索引位置
统计函数
amin() 和 amax()
amin():axis=0,找每列中的最小值,axis=1,找每行中最小值。
amax():类似np.amin()
ptp()
计算数组元素中最值之差值,即最大值 - 最小值对于二维数组来说,
axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向:
axis=0,垂直方向找到最大值和最小值,取它们差的绝对值,
axis=1,水平方向找最大值和最小值,取它们差的绝对值median()
median()
用于计算中位数,中位数是指将数组中的数据按从小到大的顺序排列后,位于中间位置的值。如果数组的长度是偶数,则中位数是中间两个数的平均值。
np.median():axis=0,垂直方向所有元素排列,取中间位置的数,如果数组的长度是偶数,则中位数是中间两个数的平均值。
axis=1,水平方向所有元素排列,取中间位置的数,如果数组的长度是偶数,则中位数是中间两个数的平均值。
axis=None,将数组转为一维数组在取中间位置的数,如果数组的长度是偶数,则中位数是中间两个数的平均值。
mean()
沿指定的轴,计算数组中元素的算术平均值(即元素之总和除以元素数量)
np.mean():axis=0,垂直方向所有元素相加,求算数平均值。
axis=1,水平方向所有元素相加,求算数平均值。
axis=None,将数组转为一维数组,再相加取平均值
average()
加权平均值是将数组中各数值乘以相应的权数,然后再对权重值求总和,最后以权重的总和除以总的单位数(即因子个数);根据在数组中给出的权重,计算数组元素的加权平均值。该函数可以接受一个轴参数 axis,如果未指定,则数组被展开为一维数组。
axis=0,垂直方向所有元素和另一个数组中对应值相乘,求加权平均值。
axis=1,水平方向所有元素和另一个数组中对应值相乘,求加权平均值。
axis=None,将数组转为一维数组,再相加取加权平均值
var()
在 NumPy 中,计算方差时使用的是统计学中的方差公式,而不是概率论中的方差公式,主要是因为 NumPy 的设计目标是处理实际数据集,而不是概率分布。
np.var(arr,ddof),求方差
不指定ddof=1,求总体方差,若ddfo=1 则求样本方差
std()
标准差是方差的算术平方根,用来描述一组数据平均值的分散程度。若一组数据的标准差较大,说明大部分的数值和其平均值之间差异较大;若标准差较小,则代表这组数值比较接近平均值
求方差的算术平方根。