Numpy的广播机制(Broadcast)

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)
image
数组维度相同,其中有个轴为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)
image

你可能感兴趣的:(Numpy的广播机制(Broadcast))