Какой эффективный способ, учитывая матрицу NumPy (2D-массив), вернуть минимальные / максимальные n
значения (вместе с их индексами) в массиве?
В настоящее время у меня есть :
def n_max(arr, n):
res = [(0,(0,0))]*n
for y in xrange(len(arr)):
for x in xrange(len(arr[y])):
val = float(arr[y,x])
el = (val,(y,x))
i = bisect.bisect(res, el)
if i > 0:
res.insert(i, el)
del res[0]
return res
Это занимает в три раза больше времени, чем алгоритм сопоставления шаблонов изображений, который pyopencv
делает для генерации массива, на котором я хочу это запустить, и я считаю, что это глупо.