学科分类
目录
数据分析

矢量化运算

NumPy数组不需要循环遍历,即可对每个元素执行批量的算术运算操作,这个过程叫做矢量化运算。不过,如果两个数组的大小(ndarray.shape)不同,则它们进行算术运算时会出现广播机制。除此之外,数组还支持使用算术运算符与标量进行运算。

在NumPy中,大小相等的数组之间的任何算术运算都会应用到元素级,即只用于位置相同的元素之间,所得的运算结果组成一个新的数组。接下来,通过一张示意图来描述什么是矢量化运算,具体如图1所示。

img

图1 形状相同的数组运算

由图1可知,数组arr1与arr2对齐以后,会让相同位置的元素相加得到一个新的数组result。其中,result数组中的每个元素为操作数相加的结果,并且结果的位置跟操作数的位置是相同的。

大小相等的数组之间的算术运算,示例代码如下。

In [33]: import numpy as np
In [34]: data1 = np.array([[1, 2, 3], [4, 5, 6]])
In [35]: data2 = np.array([[1, 2, 3], [4, 5, 6]])
In [36]: data1 + data2    # 数组相加
Out[36]: 
array([[ 2, 4, 6],
​    [ 8, 10, 12]])
In [37]: data1 * data2     # 数组相乘
Out[37]: 
array([[ 1, 4, 9],
​    [16, 25, 36]])
In [38]: data1 - data2    # 数组相减
Out[38]: 
array([[0, 0, 0],
​    [0, 0, 0]])
In [39]: data1 / data2    # 数组相除
Out[39]: 
array([[1., 1., 1.],
​    [1., 1., 1.]])
点击此处
隐藏目录