Numpy 的广播机制

广播机制在numpy中居于非常重要的位置,也是numpy高效计算的秘密武器,有必要进行深入彻底的理解,简而言之,它的规则如下:

  • 规则1:如果两个数组在维度上不一样,那么维度低的数组用1(1个或者多个)从左边开始填充。
  • 规则2:如果维度数一样,在每个维度上的形状数不一样,那么该维度上的形状数为1的拉伸来与对方的形状数一样
  • 规则3:如果彼此任何维度上的形状数不一致,并且不为1,则报错

例1

image-20210104231517469

M的形状是(2,3)

a的形状是(3,)

根据规则1,先用“1”填充a最左边的维度,填充成(1,3)

然后再根据规则2,对同一维度但形状不同而形状是1的进行拉伸,

所以a广播变成了[[0,1,2],[0,1,2]],此时维度拉伸成了(2,3)

最后再相加。

例2

image-20210104232728991

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维整体再加一个维度,即在外面'套上'[...]

posted @ 2021-01-04 23:30  JohnYang819  阅读(233)  评论(0编辑  收藏  举报