2-7 Python 中的广播
Python 中的广播( Broadcasting in Python)
如下,列举四种食物中的营养成分含量表:
现在想计算不同食物中不同营养成分中的卡路里百分比,在python中的实现:
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]])
cal = A.sum(axis=0)
percentage = 100 * A / cal.reshape(1,4)
注释:
axis表示将要进行的计算是沿着哪个轴进行的,在numpy中0轴表示列,1轴表示行。
A/cal.reshape(1,4)使用了numpy中的广播集中制,使用3*4的矩阵除以一个1*4的矩阵,因为广播机制会将其从1*4扩展为3*4,再逐像素相除。
cal在此已经是1*4,使用reshape的原因,是如果在计算过程中我们不确定变量的维度时,采用reshape可以确保得到我们想要的类型,并且这个操作并不耗时。
python中的broadcasting可以总结如下图: