注:本文同步也发表在我的独立博客中。
NumPy 虽然通过底层高度优化过的计算库可以实现接近C的高效计算,但在计算复杂且计算量庞大的时候多少还是有些嫌慢。Numexpr 库是最近发现的一个非常简单易用的 Numpy性能提升工具,很大程度上从我的需求上解决了性能的问题。
先看一个例子:
import numpy as np
import numexpr as ne
nx, ny = 1200, 1500
a = np.linspace(0.,3.1416,nx*ny).reshape(nx,ny)
for i in range(100):
b = np.sin(a+i)**2 + np.cos(a+i)**2 + a**1.5
这个程序对一个较大的网格,进行一个较复杂的计算,在使用 Numpy的情况下,我的电脑大约需要运行35.5秒。
如果对其中最后一行进行修改,改成 numexpr 的表达式:
b = ne.evaluate("sin(a+i)**2 + cos(a+i)**2 + a**