当前位置: 首页 > article >正文

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()

标准差是方差的算术平方根,用来描述一组数据平均值的分散程度。若一组数据的标准差较大,说明大部分的数值和其平均值之间差异较大;若标准差较小,则代表这组数值比较接近平均值

求方差的算术平方根。


http://www.kler.cn/news/360836.html

相关文章:

  • Java框架之MyBatis Plus
  • 贵州师范大学2025考研初复试资料清单一览
  • PLL锁相环带宽定义,以及PI参数自动整定
  • 使用SpringBoot自定义注解+AOP+redisson锁来实现防接口幂等性重复提交
  • 加密,混淆,摘要,序列化的理解
  • 柔性数组的使用
  • 基于ECS和NAS搭建个人网盘
  • Java访问修饰符private,default,protected,public
  • LeetCode_2413. 最小偶倍数_java
  • 基于Multisim的任意进制计数器设计与仿真
  • 【Linux 从基础到进阶】磁盘I/O性能调优
  • uniapp 实现input聚焦时选中内容(已封装)兼容微信小程序
  • uniapp的相关知识(2)
  • 10.22学习
  • Recall/Coarse Ranking/Fine Ranking
  • 每日算法一练:剑指offer——数组篇(3)
  • 图像异常检测评估指标-分类性能
  • 存-20241019 CSPJ模拟测试5 题解
  • 免费开源的微信开发框架
  • CentOS安装Docker教程,及报错。