在Python中循环数组或其他跟数组类似的数据结构时会涉及很多开销。
NumPy中的矢量化操作把内部循环委托给高度优化的C和Fortran函数,从而实现更高效的python 代码。
Numpy 的矢量化就是用数组表达式代替显示的for循环,它将操作表达为作用在一个数组上,而不是各个元素上。
代码举例如下,a和b 是两个长度相同的一维数组,现在要将这两个数组中对应位置的元素分别相乘。
原生的python代码操作如下:
c = [] for i in range(len(a)): c.append(a[i]*b[i])
Numpy 的矢量化操作如下:
c = a * b
对于两个形状相同的numpy 数组,运算时就按照相应的位置一一运算即可。
对于形状不相同的两个numpy 数组,就按照广播的规则进行运算。