※ こちらも併せてお読み下さい
numpy.max はヘビーループでは遅い(Python)
ちょっと気づいたのでメモ。
最大値を取ることは良くあるけれど、Python なんか遅い。
max 関数がボトルネックになることがある。
max なんてわざわざ numpy 使う必要ないだろと勝手に思ってたけど
測ってみると桁外れに速かった。
ただし、入力は ndarray でないと速くない。それはそうかも。
まあ、桁外れと言っても、15倍程度なんだけれど、十分助かった。
ループ中の巨大配列での max だったので。
以下、実行コード。
import time import numpy as np def chk(fn, a): st = time.time() fn(a) print(time.time() - st) a = list(range(0,10000000)) chk(max, a) chk(max, np.array(a)) chk(np.max, a) chk(np.max, np.array(a))
0.15296053886413574
0.6359236240386963
0.5353002548217773
0.010660648345947266
思い込みはいかんね。。。ちゃんと確認せんと。
Python のバージョンは 3.7.3 。