Быстрый поиск нескольких максимальных значений в 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. Как я могу ускорить процесс?

Спасибо вам большое!

Ответы на вопрос(4)

Ваш ответ на вопрос