广播可以使python和numpy部分代码执行的更快。
形成一个矩阵A如下:
import numpy as np
A = np.array([[56.0,0.0,4.4,68.0],
[1.2,104.0,52.0,8.0],
[1.8,135.0,99.0,0.9]])
print(A)
在Python中,元组要用“[]”括起来,里边的元素用“,”隔开。
对矩阵A进行计算如下:
cal = A.sum(axis = 0)
print(cal)
axis = 0是在竖直方向求和,axis = 1是在水平方向求和。
percentage = 100 * A/cal.reshape(1,4)
print(percentage)
向量除法,调用reshape函数,确定被除矩阵的正确性。
广播的规则:如果有一个m*n的矩阵,加上或减去或乘上或除以一个1*n的矩阵,那么python都会把它复制m次,使之变为一个m*n的矩阵,然后再做逐项运算。
如何消灭由于广播造成的奇怪bug:
a = np.random.randn(5,1)
assert(a.shape == (5,1))
a = a.reshape(5,1)
1、明确要生成的矩阵行列(5,1);
2、用assert检查;
3、用reshape调整。