NumPy和Pandas中的广播
Numpy中的广播
广播(Broadcast)是 numpy 对不同维度(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
“维度”指的是特征或数据列。例如,有一项研究测量水的温度,另一项研究测量水的盐度和温度,第一个研究有一个维度;温度,而盐度和温度的研究是二维的。维度只是每个观测的不同属性,或者一些数据中的行。
在正常情况下,NumPy不能很好地处理不同大小的数组。典型的NumPy操作一般会要求数据的维度是相同的,例如
import numpy as np
a = np.array([50, 20, 1, 15])
b = np.array([10, 20, 10, 20])
print(np.shape(a), "\n", np.shape(a))
(4,)
(4,)
它们都是水平形状的一维数组。我们可以对他们进行常规的数学操作,因为它们是相同的形状:
print(a * b)
[500 400 10 300]
如果要使用另一个具有不同形状的数组来尝试上一个示例,就会得到维度不匹配的错误。
c = np.array([4, 2, 1])
print(c * a)
ValueError: operands could not be broadcast together with shapes (3,) (4,)
但是因为Numpy 的广播机制,Numpy会尝试将数组广播到另一个操作数。广播通过扩充较小数组中的元素来适配较大数组的形状,它的本制是就是张量自动扩展,也就是说根据规则来进行的张量复制。
下面我们看下几个常见的广播示例
完整文章:
https://avoid.overfit.cn/post/0b8794dee7ab435fbc80d6e86c4b412c