Быстрый поиск нескольких максимальных значений в 2d массиве
Ситуация выглядит следующим образом:
У меня есть двумерный массив NumPy. Его форма (1002, 1004). Каждый элемент содержит значение от 0 до Inf. Теперь я хочу определить первые 1000 максимальных значений и сохранить соответствующие индексы в списке с именем x и в списке с именем y. Это потому, что я хочу построить максимальные значения, и индексы на самом деле соответствуют положению значений в реальном времени x и y.
То, что я до сих пор это:
x = numpy.zeros(500)
y = numpy.zeros(500)
for idx in range(500):
x[idx] = numpy.unravel_index(full.argmax(), full.shape)[0]
y[idx] = numpy.unravel_index(full.argmax(), full.shape)[1]
full[full == full.max()] = 0.
print os.times()
Здесь полный мой 2D-массив. Как видно из цикла for, я определяю только первые 500 максимальных значений на данный момент. Это, однако, уже занимает около 5 с. Для первых 1000 максимальных значений пользовательское время должно составлять около 0,5 с. Я заметил, что очень трудоемкая часть каждый раз устанавливает предыдущее максимальное значение равным 0. Как я могу ускорить процесс?
Спасибо вам большое!