广播机制是numpy让两个不同shape的数组能够做一些运算,需要对参与运算的两个数组做一些处理或扩展,最终使参与运算的两个数组的shape一样,然后广播计算 (对应位置数据进行运算)得到结果。
numpy的广播原则:如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
import numpy as np
A=np.arange(0,40,10).reshape(4,1)
B=np.arange(0,3)
C=A+B
print("矩阵A:{}".format(A.shape),'\n',A)
print("矩阵B:{}".format(B.shape),'\n',B)
print("矩阵C:{}".format(C.shape),'\n',C)
'''
矩阵A:(4, 1)
[[ 0]
[10]
[20]
[30]]
矩阵B:(3,)
[0 1 2]
矩阵C:(4, 3)
[[ 0 1 2]
[10 11 12]
[20 21 22]
[30 31 32]]
'''
一维数组在轴0上的广播
上例中矩阵A的shape为(4,1),矩阵B的shape为(3,),都是一维数组并且在轴0上进行广播,使之都扩展成shape为(4,3)的矩阵运算。即相加操作,这就是通过广播完成的。