Numpy 的矢量化 | 看不懂numpy 广播 怎么办?

在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 数组,就按照广播的规则进行运算。

 

 

 

 

posted @ 2020-02-06 16:07  周周和奇奇  阅读(164)  评论(0编辑  收藏  举报