2013-09-02 16 views
21

Trochę mylę czytając dokumentację z argmin function in numpy. To wygląda tak, jak powinien wykonać zadanie:Jak zwrócić wszystkie minimalne indeksy w numpy

czyta ten

zwróci wskaźników minimalnych wartości wzdłuż osi.

mogę założyć, że

np.argmin([5, 3, 2, 1, 1, 1, 6, 1]) 

zwróci tablicę wszystkich indeksach: co będzie [3, 4, 5, 7]

Ale zamiast tego powraca tylko 3. Gdzie jest haczyk lub co powinienem zrobić, aby uzyskać mój wynik?

Odpowiedz

31

Ta dokumentacja ma więcej sensu, gdy myślisz o tablicach wielowymiarowych.

>>> x = numpy.array([[0, 1], 
...     [3, 2]]) 
>>> x.argmin(axis=0) 
array([0, 0]) 
>>> x.argmin(axis=1) 
array([0, 1]) 

o osi określonej, argmin wykonuje subarrays jednowymiarowe wzdłuż określonej osi i powrót indeksu pierwszej minimalnej wartości każdego subarray'S. Nie zwraca wszystkich wskaźników o pojedynczej minimalnej wartości.

aby wszystkie wskaźniki wartości minimalnej, można zrobić

numpy.where(x == x.min()) 
13

Patrz dokumentacji numpy.argmax (który jest określany przez Dokumenty do numpy.argmin):

W przypadku wielu zdarzeń maksymalnych wartościach indeksów odpowiednio do pierwszego wystąpienia są zwracane.

Określenie dokumentacji ("indeksy" zamiast "indeks") odnosi się do wielowymiarowego przypadku, gdy podano axis.

Nie można tego zrobić z np.argmin. Zamiast tego zadziała:

np.where(arr == arr.min()) 
Powiązane problemy