简单来说:如果用(m,n)的矩阵和(1,n)的矩阵做算术运算,那么会将(1,n)的矩阵复制m行;如果用(m,n)的矩阵和(m,1)的矩阵做算术运算,那么会将(m,1)的矩阵复制n列。如果(m,n)与一个实数做算术运算,那么这个实数就会被复制成(m,n)的矩阵。
code演示
假设现在有各种食物每千克对应的卡路里、蛋白质、脂肪的数量,需要求出对于每种食物来说,卡路里、蛋白质以及脂肪各占比情况。
import numpy as np
""" 数据情况 """
data = 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('data:',data,end='\n')
""" 按列求和 """
sumcol = np.sum(data,axis=0)
print('sumcol:',sumcol,end='\n')
""" 广播求百分比 """
percent = 100*data/sumcol
print('percent:',percent,end='\n')
data: [[ 56. 0. 4.4 68. ]
[ 1.2 104. 52. 8. ]
[ 1.8 135. 99. 0.9]]
sumcol: [ 59. 239. 155.4 76.9]
percent: [[94.91525424 0. 2.83140283 88.42652796]
[ 2.03389831 43.51464435 33.46203346 10.40312094]
[ 3.05084746 56.48535565 63.70656371 1.17035111]]
Process finished with exit code 0