广播机制的作用
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
矩阵之间相加和相乘时用到的广播机制
在对两个形状不同的矩阵进行加法运算的时候先将这两个矩阵的形状进行右对齐,然后在每个位置取最大作为结果矩阵相应位置的形状。例如:
a.shape =2*3*4
b.shape = 5*6
c=a+b
则:
c.shape=2*5*6
实际的例子一:
import numpy as np
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
print(a + b)
结果为:
[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]
实际的例子二:
b = np.array([1, 2, 3]).reshape(3, 1)
c = np.array(range(9)) # c=[0,1,2,3,4,5,6,7,8]
d = b+c
print(d)
结果为:
[[ 1 2 3 4 5 6 7 8 9]
[ 2 3 4 5 6 7 8 9 10]
[ 3 4 5 6 7 8 9 10 11]]
这里的b和c都分别进行了广播:
实际的例子三(相乘):
这个例子沿用第二个例子,只是将运算符号变了一下
b = np.array([1, 2, 3]).reshape(3, 1)
c = np.array(range(9)) # c=[0,1,2,3,4,5,6,7,8]
d = b*c
print(d)
结果为:
[[ 0 1 2 3 4 5 6 7 8]
[ 0 2 4 6 8 10 12 14 16]
[ 0 3 6 9 12 15 18 21 24]]
广播方式与例二相同,然后进行逐位相乘。