Numpy数组广播Broadcasting机制

你可能已经知道,Numpy数组运算是对应维度元素进行运算,但是有时候却遇到维度shape不一样(有一定限制)的数组也可以进行运算,这就是Numpy数组广播机制。
数组广播原则:如果两个数组的后缘维度(即从末尾算起的维度)的轴长相等,或者其中一个数组后续维度的轴长为1,则认为这两个数组是广播兼容的,广播会在缺失和(或)长度为1的轴上进行.
只讲理论不举栗子的行为都是耍流氓,现在来看几个栗子:

  1. 数组与标量运算
    在这里插入图片描述
    其实就是对两个数组中的一个或者多个在行、列上进行复制元素扩展,如果最后能形成两个shape一样的数组,就进行广播运算。
  2. 其中一个数组后续维度的轴长为1
    在这里插入图片描述
    根据广播原则:arr_1的shape为(4,1),arr_2的shape为(3,),所以会同时在两个轴发生广播,arr_1的shape变成(4,3),而arr_2的shape变成(4,3),所以结果也为(4,3).
    广播运算过程
    注:维度(3,1)与(3,)不相等
  3. 后续维度轴长相等
    在这里插入图片描述
    根据广播原则分析:arr_3的shape为(3,4,2),arr_4的shape为(4,2),它们的后缘维度轴长度都为(4,2),所以可以在0轴进行广播,arr_4的shape变为(3,4,2)。
    再看一个三维空间例子:shape分别为(5,1, 3),(8, 5, 1),(8, 1, 3)
    在这里插入图片描述
    可以参考官网:https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html?highlight=broadcasting

猜你喜欢

转载自blog.csdn.net/qq_33254870/article/details/82942038
今日推荐