Numpy 的广播机制
广播机制在numpy中居于非常重要的位置,也是numpy高效计算的秘密武器,有必要进行深入彻底的理解,简而言之,它的规则如下:
- 规则1:如果两个数组在维度上不一样,那么维度低的数组用1(1个或者多个)从左边开始填充。
- 规则2:如果维度数一样,在每个维度上的形状数不一样,那么该维度上的形状数为1的拉伸来与对方的形状数一样
- 规则3:如果彼此任何维度上的形状数不一致,并且不为1,则报错
例1
M的形状是(2,3)
a的形状是(3,)
根据规则1,先用“1”填充a最左边的维度,填充成(1,3)
然后再根据规则2,对同一维度但形状不同而形状是1的进行拉伸,
所以a广播变成了[[0,1,2],[0,1,2]],此时维度拉伸成了(2,3)
最后再相加。
例2
a.shape-->(3,1)
b.shape--->(3,)
首先b填充为(1,3)
然后a拉伸为(3,3)
b拉伸为(3,3)
附np.newaxis用法
np.newaxis的作用主要就是对数组进行升维,一般配合:
使用,而:
可以理解为'遍历第n层维度',然后'进入下一维度',np.newaxis
可理解为在遍历第n维前,对第n维整体再加一个维度,即在外面'套上'[...]
。
#####
愿你一寸一寸地攻城略地,一点一点地焕然一新
#####