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可以总结如下图:

posted @ 2018-08-16 08:43  刘-皇叔  阅读(1372)  评论(0编辑  收藏  举报