非常に大きな 2D numpy 配列の 1 つの次元に沿って最小配列インデックスを見つけようとしています。これは非常に遅いことがわかりました(すでにボトルネックで高速化を試みましたが、これは最小限の改善に過ぎませんでした)。ただし、単純な最小値を取ると、桁違いに速くなるように見えます。
import numpy as np
import time
randvals = np.random.rand(3000,160000)
start = time.time()
minval = randvals.min(axis=0)
print "Took {0:.2f} seconds to compute min".format(time.time()-start)
start = time.time()
minindex = np.argmin(randvals,axis=0)
print "Took {0:.2f} seconds to compute argmin".format(time.time()-start)
私のマシンでは、次のように出力されます。
Took 0.83 seconds to compute min
Took 9.58 seconds to compute argmin
argmin が非常に遅い理由はありますか? min に匹敵するスピードアップする方法はありますか?