Jak uzyskać pozycję (indeksy) największej wartości w wielowymiarowej tablicy NumPy?
Odpowiedzi:
argmax()
Metoda powinna pomóc.
Aktualizacja
(Po przeczytaniu komentarza) Uważam, że argmax()
metoda będzie działać również dla tablic wielowymiarowych. Dołączona dokumentacja zawiera przykład:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Zaktualizuj 2
(Dzięki komentarzowi Kenny'egoTM ) Możesz użyć, unravel_index(a.argmax(), a.shape)
aby pobrać indeks jako krotkę:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
unravel_index(a.argmax(), a.shape)
do pobierania indeksu jako krotki.
(edytuj) Miałem na myśli starą odpowiedź, która została usunięta . Zaakceptowana odpowiedź przyszła po mojej. Zgadzam się, że argmax
to lepsze niż moja odpowiedź.
Czy nie byłoby bardziej czytelne / intuicyjne, aby to zrobić?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Lub,
numpy.argwhere(a.max() == a)
Alternatywnym sposobem jest zmiana numpy
tablicy na list
oraz użycie max
i index
metody:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4