广播机制(Broadcasting)的功能是为了方便不同shape的数组(NumPy库的核心数据结构)进行数学运算。广播提供了一种向量化数组操作的方法,以便在C中而不是在Python中进行循环,这通常会带来更高效的算法实现。广播的兼容原则为:
·对齐尾部维度。
·shape相等or其中shape元素中有一个为1。
以下通过实例来具体说明。
import numpy as np a=np.arange(10) b=np.arange(10) #两个shape相同的数组相加 print(a+b) #一个数组与标量相加 print(a+3) #两个向量相乘 print(a*b) #多维数组之间的运算 c=np.arange(10).reshape([5,2]) d=np.arange(2).reshape([1,2]) #首先将d数组进行复制扩充为[5,2],如何复制请参考图1-2,然后相加。 print(c+d)
图1-2 NumPy多维数组相加
打印结果:
[ 0 2 4 6 8 10 12 14 16 18] [ 3 4 5 6 7 8 9 10 11 12] [ 0 1 4 9 16 25 36 49 64 81] [[ 0 2] [ 2 4] [ 4 6] [ 6 8] [ 8 10]]
有时为了保证矩阵运算正确,我们可以使用reshape()函数来变更矩阵的维度。