NumPy和Pandas中的广播

Numpy中的广播

广播(Broadcast)是 numpy 对不同维度(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。

“维度”指的是特征或数据列。例如,有一项研究测量水的温度,另一项研究测量水的盐度和温度,第一个研究有一个维度;温度,而盐度和温度的研究是二维的。维度只是每个观测的不同属性,或者一些数据中的行。

在正常情况下,NumPy不能很好地处理不同大小的数组。典型的NumPy操作一般会要求数据的维度是相同的,例如

  1. import numpy as np
  2. a = np.array([50, 20, 1, 15])
  3. b = np.array([10, 20, 10, 20])
  4. print(np.shape(a), "\n", np.shape(a))
  5. (4,)
  6. (4,)

它们都是水平形状的一维数组。我们可以对他们进行常规的数学操作,因为它们是相同的形状:

  1. print(a * b)
  2. [500 400 10 300]

如果要使用另一个具有不同形状的数组来尝试上一个示例,就会得到维度不匹配的错误。

  1. c = np.array([4, 2, 1])
  2. print(c * a)
  3. ValueError: operands could not be broadcast together with shapes (3,) (4,)

但是因为Numpy 的广播机制,Numpy会尝试将数组广播到另一个操作数。广播通过扩充较小数组中的元素来适配较大数组的形状,它的本制是就是张量自动扩展,也就是说根据规则来进行的张量复制。

下面我们看下几个常见的广播示例

完整文章:

https://avoid.overfit.cn/post/0b8794dee7ab435fbc80d6e86c4b412c

posted @ 2022-09-10 11:39  deephub  阅读(64)  评论(0编辑  收藏  举报