学科分类
目录
数据分析

数组广播

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术计算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样就可以进行矢量化运算了。下面来看一个例子。

In [40]: import numpy as np
In [41]: arr1 = np.array([[0], [1], [2], [3]])
In [42]: arr1.shape
Out[42]: (4, 1)
In [43]: arr2 = np.array([1, 2, 3])
In [44]: arr2.shape
Out[44]: (3,)
In [45]: arr1 + arr2
Out[45]: 
array([[1, 2, 3],
​    [2, 3, 4],
​    [3, 4, 5],
​    [4, 5, 6]])

上述代码中,数组arr1的shape是(4,1),arr2的shape是(3,),这两个数组要是进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使得数组arr1和arr2的shape都变成(4,3)。

下面通过一张图来描述广播机制扩展数组的过程,具体如图1所示。

image-20200619111046449

图1 数组广播机制

注意:

广播机制实现了对两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可:

(1)两个数组的某一维度等长。

(2)其中一个数组为一维数组。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。

点击此处
隐藏目录