Какой эффективный способ, учитывая матрицу numpy (массив 2-d), вернуть значения min/max 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
Это занимает 3 раза дольше, чем алгоритм сопоставления шаблонов изображений, который pyopencv
делает, чтобы сгенерировать массив, в котором я хочу запустить это, и я считаю, что это глупо.