Ce face np.argmax()
np.argmax() returnează indicele elementului maxim, iar np.argmin() indicele elementului minim. Dacă maximul apare de mai multe ori, se returnează prima poziție. Indicele îl poți folosi apoi pentru a afla, de exemplu, numele lunii sau al orașului dintr-o altă listă.
Pe un tablou 2D fără axis, indicele se calculează pe tabloul aplatizat (rând după rând). Ca să obții rândul și coloana, dă indicele lui np.unravel_index(indice, a.shape). Cu axis=1 primești poziția maximului pe fiecare rând, cu axis=0 pe fiecare coloană.
Parametri
| Parametru | Descriere |
|---|---|
a |
Tabloul. |
axis |
Axa pe care se caută; None = tabloul aplatizat. |
keepdims |
Păstrează axa cu lungimea 1 (NumPy 1.22+). |
indici, forma |
La np.unravel_index: indicele „plat” și forma tabloului. |
Ce returnează
argmax/argmin: un întreg (np.int64) sau un tablou de indici. unravel_index: un tuplu de indici, câte unul pe axă.
Exemple
Exemplul 1: Luna cu cele mai mari vânzări
Valoarea 1600 apare în martie și în mai; argmax returnează prima poziție.
import numpy as np
luni = ["ian", "feb", "mar", "apr", "mai"]
vanzari = np.array([1200, 950, 1600, 1100, 1600])
i_max = np.argmax(vanzari)
i_min = np.argmin(vanzari)
print("Maxim în", luni[i_max], "cu", vanzari[i_max], "lei")
print("Minim în", luni[i_min], "cu", vanzari[i_min], "lei")
Rezultat
Maxim în mar cu 1600 lei
Minim în feb cu 950 lei
Exemplul 2: Poziția pe fiecare rând
Pentru fiecare elev, indicele materiei la care are nota cea mai mare.
import numpy as np
materii = np.array(["mate", "română", "info"])
note = np.array([
[9, 8, 10], # Ana
[6, 9, 5], # Mihai
[10, 7, 8], # Ioana
])
pozitii = np.argmax(note, axis=1)
print(pozitii)
print(materii[pozitii])
Rezultat
[2 1 0]
['info' 'română' 'mate']
Exemplul 3: Rândul și coloana maximului cu unravel_index
import numpy as np
orase = ["Iași", "Cluj", "Brașov"]
temp = np.array([
[3, 7, 5],
[1, 4, 12],
[8, 9, 6],
])
plat = np.argmax(temp)
rand, coloana = np.unravel_index(plat, temp.shape)
print("Indice plat:", plat)
print(f"Maxim {temp[rand, coloana]} grade în {orase[rand]}, ziua {coloana + 1}")
Rezultat
Indice plat: 5
Maxim 12 grade în Cluj, ziua 3
Greșeli frecvente
- Aștepți valoarea maximă și primești poziția ei. Pentru valoare folosește
np.max(), saua[np.argmax(a)]. - Folosești direct rezultatul lui
np.argmax()pe un tablou 2D ca indice de rând: el este un indice pe tabloul aplatizat. Treci prinnp.unravel_index(). - Pe date cu
np.nan,np.argmax()returnează poziția primuluinan. Foloseștenp.nanargmax().
Comenzi înrudite
np.min() și np.max(): Găsește valoarea minimă și maximă (np.min, np.max), diferența dintre ele (np.ptp) și maximul element cu element (np.maximum).np.argsort(): Returnează indicii care ar sorta tabloul; așa sortezi un tablou după altul, de exemplu numele după note.np.where(): Cu trei argumente alege valori după o condiție (dacă-altfel pe tablouri); cu un argument returnează pozițiile unde condiția e adevărată.Indexare și slicing: Accesează un element, o bucată, un rând sau o coloană dintr-un tablou NumPy cu paranteze pătrate.