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!