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
max、power などの他の Numpy 関数でも同様の結果が得られました。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