NumPy(二):

429 阅读3分钟

五、聚合(概括统计值):

NumPy中常见的聚合函数一览:

在这里插入图片描述

  • 1. NumPy中的聚合函数往往在python中也有与之相同功能的函数,但是NumPy中的聚合函数能在编译码中进行操作,所以计算得更快一些。
  • 2. 聚合函数的两种用法(以sum为例):
  • ①np.sum(array)
  • ②array.sum()
  • 3. 默认情况下,每一个 NumPy 聚合函数将会返回对整个数组的聚合结果。但是可以通过设置axis参数指定沿着哪个轴的方向进行聚合。例如,可以通过指定 axis=0 针对每一列作聚合,通过指定axis=1对每一行做聚合。
  • 4. 大多数的聚合都 有对 NaN 值的安全处理策略(NaN-safe),即计算时忽略所有的缺失值。

六、广播(不同维度的数组运算)

1.介绍:

将a和b扩展至匹配一个公共的形状然后进行运算

在这里插入图片描述
注意: 浅色的盒子表示广播的值,这个额外的内存并没有在实际操作中进行分配

2.广播的规则:

  • 规则 1: 如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1。
  • 规则 2: 如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度 为 1 的维度扩展以匹配另外一个数组的形状。
  • 规则 3: 如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于 1, 那么会引发异常。

下面看三个例子:

在这里插入图片描述
广播示例1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果希望示例3在右边补1使广播得以实现,可以通过变形数组来实现( np.newaxis 关键字)
在这里插入图片描述
3.广播的应用:

  1. 数组的归一化
  2. 画一个二维函数

七、比较、掩码和布尔逻辑

1. 比较(通用函数的拓展):

在这里插入图片描述
比较的返回结果是一个布尔类型的数组
在这里插入图片描述
在这里插入图片描述

2. 操作布尔矩阵:

①统计记录的个数:

在这里插入图片描述
如果需要统计布尔数组中记录为True的个数,有两种方法: 是使用 np.count_nonzero 函数,例如
在这里插入图片描述
是利用 np.sum(在布尔数组中 False 会被解释成 0,True 会被解释成 1):
在这里插入图片描述
sum() 的好处是,和其他 NumPy 聚合函数一样,这个求和也可以沿着行或列进行:
在这里插入图片描述
如要快速检查任意或者所有这些值是否为True,可以用np.any() 或 np.all():
在这里插入图片描述
在这里插入图片描述
同样地,np.all() 和 np.any() 也可以用于沿着特定的坐标轴:
在这里插入图片描述
②np.sum()+比较+布尔运算符(&、|、^ 和 ~ ):

例如想统计降水量小于 4 英寸且大于 2 英寸的天数:

在这里插入图片描述
3.将布尔数组作为掩码: 实质为array[布尔数组],返回一个一维数组,存储布尔数组中True所对应在array中的位置的值 例如希望抽取出x数组中所有小于5的元素:
在这里插入图片描述
或者根据西雅图降水数据进行一些相关统计
在这里插入图片描述