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 argmaxto 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 numpytablicy na listoraz użycie maxi indexmetody:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4