Znajdź wiele wartości maksymalnych w tablicy 2d szybko

Sytuacja wygląda następująco:

Mam tablicę numpy 2D. Jego kształt to (1002, 1004). Każdy element zawiera wartość od 0 do Inf. Teraz chcę określić pierwsze 1000 wartości maksymalnych i zapisać odpowiednie indeksy na liście o nazwie xi liście o nazwie y. Dzieje się tak dlatego, że chcę narysować wartości maksymalne, a indeksy faktycznie odpowiadają rzeczywistej pozycji x i y wartości.

Do tej pory mam:

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()

Tutaj pełna jest moja tablica numpy 2D. Jak widać z pętli for, w pierwszej chwili określam tylko pierwsze 500 maksymalnych wartości. To jednak trwa już około 5 sekund. Dla pierwszych 1000 wartości maksymalnych czas użytkownika powinien wynosić około 0,5 sekundy. Zauważyłem, że bardzo czasochłonną częścią jest ustawianie poprzedniej maksymalnej wartości na 0 za każdym razem. Jak mogę to przyspieszyć?

Dziękuję bardzo!

questionAnswers(4)

yourAnswerToTheQuestion