首先说一下numpy的广播规则:
1、如果两个数的维度数不同,那么小维度数组的形状将会在最左边补1。
2、如果两个数组的形状在任何一个维度都不匹配,那么数组的形状会沿着维度为1的维度扩展以匹配另外一个数组的形状。
3、如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,那么会引发异常。
import numpy as np
a = np.ones((2,3))
b = np.arange(3)
#a.shape = (2,3) b.shape = (3,)
#第一步,根据规则1,维度小的左边补1,b.shape = (1,3)
#第二部,根据规则2,维度不匹配,且为1的进行扩展以匹配另外一个数组,b.shape = (2,3)
c = a + b
#c.shape = (2,3)
print(c)