Numpy 应该很快。但是,当将 Numpy ufunc 与标准 Python 函数进行比较时,我发现后者要快得多。
例如,
aa = np.arange(1000000, dtype = float)
%timeit np.mean(aa) # 1000 loops, best of 3: 1.15 ms per loop
%timeit aa.mean # 10000000 loops, best of 3: 69.5 ns per loop
我使用其他 Numpy 函数(如 max、power)得到了类似的结果。我的印象是 Numpy 有一个开销,这使得小型阵列的运行速度较慢,但大型阵列的运行速度更快。在上面的代码中 aa 并不小:它有 100 万个元素。我错过了什么吗?
当然,Numpy 很快,只是功能看起来很慢:
bb = range(1000000)
%timeit mean(bb) # 1 loops, best of 3: 551 ms per loop
%timeit mean(list(bb)) # 10 loops, best of 3: 136 ms per loop