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)
cal=A.sum(axis=0)#这个轴为0,希望python在竖直方向求和,这个轴0意味着数值方向相加
print(cal)
percentage=100*A/cal.reshape(1,4)
print(percentage)
cal=A.sum(axis=0)
axis=0,这个轴为0,希望python在竖直方向求和,这个轴0意味着数值方向相加,
而水平轴是1,可以写成axis=1
这样就可以是水平求和,而不是竖直求和
percentage=100*A/cal.reshape(1,4)
以上命令是python广播的另一个例子
矩阵A是一个3*4的矩阵
让他除以一个1*4的矩阵
技术上,在第一行代码后变量cal已经是一个1*4的矩阵了,所以技术上不需要调用reshape
但是当写python代码时,我们需要调用,为了确保其时正确的行向量和列向量
reshape()命令经常用到,其为O(1)操作,成本很低。
另外几个广播的实例
python会做的事情是,将100拆开为一个1*4的矩阵(向量)
在前期的logistic回归函数当中的参数b就利用了类似的广播形式
python会对以上矩阵相加进行如下处理
同理也会水平复制m次
python的广播中有一个一般规律
如果一个m*n的矩阵,对一个1*n(m*1)的矩阵进行加减乘除时,会进行重复m(n)次已得到m*n的矩阵,并进行运算
一个矩阵加一个常数,该常数会不断重复,直到得到与之相同的矩阵
以上广播形式为在神经网络模型中主要用到的广播形式