广播的原则:如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
例如:
import numpy
a=numpy.arange(12).reshape((3,4))
print(a)
print(a.shape)
b=numpy.arange(4)
print(b)
print(b.shape)
print(a-b)
print((a-b).shape)
数组a的形状是3*4
数组b的形状是4
a-b时符合广播的原则,会隐式地将b复制很多次进行运算。
c=numpy.arange(24).reshape((2,3,4))
d=numpy.arange(12).reshape((3,4))
print(c)
print(c.shape)
print(d)
print(d.shape)
print(c-d)
print((c-d).shape)
数组c的形状是2*3*4
数组d的形状是3*4
此时在c和d做运算时也符合广播原则。