Numpy中的对于数组间的算术运算采用“元素一 一对应”的计算机制,因而一般要求两个数组的形状相同才能进行数组间的算术运算,但是在某些情况中,Numpy中允许符合一定规则的不同形状的数组进行算术运算。广播的核心规则如下:
- 两数组的后缘维度轴长度相同(满足低维数组和高维数组的某一内层元素形状相同,低维数组才能被拓展成和高维数组一样的形状)
- 两数组的后缘维度中有任意个长度是1或缺失
- 输出数组的形状是输入数组形状的各个维度上的最大值
上面的规则可能看起来比较难懂,简单来说就是低维数组要想被拓展成和高维数组一样的形状,从后往前比较时两数组时,低维数组的所有维度要么等于高维数组的对应维度,要么该维度大小值为1或缺失,数组广播将会在维度为1或缺失的维度方向上进行。举例说明如下:
下面是一些广播的例子:
举例1:
In:
a = np.array([1,2,3,4])
b = 3
print(a*b)
Out:
[ 3 6 9 12]
标量和数组的乘积运算即是数组广播的最简单的一个例子,上诉过程中标量b被“虚拟”地扩展为数组[3,3,3,3]然后才和数组a[1,2,3,4]进行乘法运算,以满足Numpy中两数组间“元素一 一对应”的运算规则。
举例2:
In:

Numpy中的数组算术运算遵循特定的广播规则,允许不同形状的数组进行运算。核心规则包括后缘维度相同、维度长度为1或缺失及输出形状取最大值。本文通过多个实例详细解析这些规则。
最低0.47元/天 解锁文章
1525

被折叠的 条评论
为什么被折叠?



