Python Numpy中的广播机制(broadcasting)可以使代码的运行速度更快、减少代码数量以下是其加减乘除简单用法的例子。
1、加法:
import numpy as np
A = np.array([[1,2,3],
[1,3,5],
[2,4,6]])
B = np.array([100,200,300])
print("A=",A)
print("B=",B)
print("A+B=",A+B)
两个矩阵列相同,行不相同,则广播机制将行数少的矩阵扩展使得两个矩阵可以相加。
2、减法:
import numpy as np
A = np.array([[1,2,3],
[1,3,5],
[2,4,6]])
B = np.array([[100],[200],[300]])
print("A=",A)
print("B=",B)
print("B-A=",B-A)
同样的行相同,列不相同,则广播机制将列数少的矩阵扩展。
3、乘法:
import numpy as np
A = np.array([[1,2,3],
[1,3,5],
[2,4,6]])
B = np.array([[100,200,300]])
print("A=",A)
print("B=",B)
print("B*A=",B*A)
注意这里的乘法使用“*”是将扩展后的矩阵每个元素进行相乘不同于矩阵的乘法。
矩阵乘法使用“@“
import numpy as np
A = np.array([[1,2,3],
[1,3,5],
[2,4,6]])
B = np.array([[100,200,300],[100,200,300],[100,200,300]])
print("A=",A)
print("B=",B)
print("A@B=",A@B)
4、除法:
import numpy as np
A = np.array([[1,2,3],
[1,3,5],
[2,4,6]])
B = np.array([[100],[200],[300]])
print("A=",A)
print("B=",B)
print("B/A=",B/A)
这里的除法也是矩阵中每个元素相除。
总结:
两个矩阵应用广播机制进行加减乘除,这两个矩阵必须满足行相同或者列相同且另一个维度为1。类似的当向量与常数应用广播机制进行加减乘除时,常数也会复制。