广播机制
广播机制的原则
如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
这句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。
广播机制的场景
1 维数不相等,但是它们的后缘维度的轴长相符
import numpy as np
a = np.arange(6).reshape(2,3)
b = np.arange(3).reshape(3)
(a+b).shape # (2, 3)
**2 有一方长度为1
a = np.arange(8).reshape(2,2,2)
b = np.arange(4).reshape(2,1,2)
(a+b).shape # (2, 2, 2)
**3 维数不相等,有一方长度为1
import numpy as np
a = np.arange(6).reshape(2,1,3)
b = np.arange(6)+5
b = b.reshape(2,3)
(a+b).shape # (2, 2, 3)
先按照维度不相等将b为维度变为(2,2,3),然后根据有一方长度为1,将a的维度变为1