Broadcast是numpy对不同形状的数组进行数值计算的方式,对数组的运算通常在相应的元素上进行。
如果两个数组a和b形状相同,即满足a.shape==b.shape
,那么a*b的结果就是a与b对应位相乘,这要求维数相等,且维度的长度相等。
import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
print('a*b:',a*b)
#a*b: [ 4 10 18]
文档原文:In order to Broadcast, the size of the trailing axes for both arrays in an operation must either be the same size or one of them must be one.
也就是说,如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
数组维度不同,后缘维度的轴长相符
import numpy as np
arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]]) #arr1.shape = (4,3)
arr2 = np.array([1, 2, 3]) #arr2.shape = (3,)
print(arr1+arr2)
数组维度相同,其中有个轴为1
import numpy as np
arr1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]]) #arr1.shape = (4,3)
arr2 = np.array([[1],[2],[3],[4]]) #arr2.shape = (4, 1)
print(arr1+arr2)