python数据科学(四) Numpy(三) 聚合 广播

本文最后更新于:2023年4月15日 晚上

python数据科学(四) Numpy(三) 聚合 广播

1 | 数组值求和, 最小值和最大值

求和

np.sum()

python内置的sum()函数也可以进行数组值求和, 但是比np.sum慢很多倍, 因为np.sum在编译码中进行操作

最小值和最大值

np.min()np.sum()

可以使用对象直接调用这些聚合方法, 即np.sum(x)等价于x.sum()

2 | 多维度聚合

当我有一个二维数组:

1
2
3
4
5
6
7
x = np.random.randint(0, 10, (3, 4))

"""
array([[6, 0, 7, 6],
[9, 4, 4, 1],
[0, 2, 0, 1]])
"""

使用x.sum()将返回所有元素的和

此时我们使用参数axis可以指定聚合的方向, 如axis=0为按列聚合, axis=1为按行聚合

注意, axis指定的是被折叠的维度, 而不是被返回的维度

axis可省略, 即x.sum(axis = 0) == x.sum(0)

其他的聚合函数

NumPy中可用的聚合函数

3 | 广播

广播可以简单理解为用于不同大小数组的二进制通用函数(加, 减, 乘等)的一组规则

对于同样大小的数组, 二进制操作是对相应元素逐个计算:

如:

1
2
3
a = np.array([0, 1, 2])
b = np.array([1, 2, 3])
a + b

当我们使用广播时, 允许如下操作:

1
2
a = np.array([0, 1, 2])
a + 5

可以让一个数组和一个标量相加

可以认为这个操作是将标量数值5扩展为数组[5, 5, 5], 然后执行加法, 但是广播让这个对值的重复实际上没有发生

广播的可视化如下:

广播的规则

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

python数据科学(四) Numpy(三) 聚合 广播
https://blog.roccoshi.top/posts/44117/
作者
RoccoShi
发布于
2021年1月15日
许可协议