Я пытаюсь найти минимальные индексы массивов по одному измерению очень большого массива 2D numpy. Я нахожу, что это очень медленно (уже пробовал ускорить его с узким местом, что было лишь минимальным улучшением). Однако, взятие прямого минимума оказывается на порядок быстрее:
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 работает намного медленнее? Есть ли способ ускорить его до сопоставимого с мин?