Ce face np.unique()
np.unique() elimină dublurile și returnează valorile distincte, în ordine sortată. Merge și pe numere, și pe texte.
Cu return_counts=True primești, pe lângă valori, de câte ori apare fiecare. Cu return_index=True primești poziția primei apariții a fiecărei valori în tabloul inițial, iar cu return_inverse=True primești, pentru fiecare element inițial, indicele valorii lui în lista de valori unice. Când ceri mai multe, rezultatul este un tuplu în ordinea: valori, index, inverse, counts.
Cu axis=0 se caută rânduri distincte într-un tablou 2D.
Parametri
| Parametru | Descriere |
|---|---|
ar |
Tabloul de intrare (fără axis este aplatizat). |
return_index |
Returnează și indicii primei apariții. |
return_inverse |
Returnează și indicii care reconstruiesc tabloul inițial din valorile unice. |
return_counts |
Returnează și numărul de apariții al fiecărei valori (NumPy 1.9+). |
axis |
Axa pe care se caută elemente distincte, de exemplu 0 pentru rânduri. |
Ce returnează
Tabloul sortat cu valorile distincte sau, dacă ceri și altceva, un tuplu de tablouri.
Exemple
Exemplul 1: Orașele distincte și câte comenzi are fiecare
import numpy as np
orase = np.array(["Iași", "Cluj", "Iași", "Brașov", "Cluj", "Iași"])
print(np.unique(orase))
valori, numar = np.unique(orase, return_counts=True)
for oras, n in zip(valori, numar):
print(oras, n)
Rezultat
['Brașov' 'Cluj' 'Iași']
Brașov 1
Cluj 2
Iași 3
Exemplul 2: Prima apariție a fiecărei note
import numpy as np
note = np.array([8, 10, 8, 7, 10, 9])
valori, prima = np.unique(note, return_index=True)
print(valori)
print(prima)
Rezultat
[ 7 8 9 10]
[3 0 5 1]
Exemplul 3: Codificarea categoriilor cu return_inverse
Fiecare oraș primește un număr: indicele lui în lista sortată de orașe.
import numpy as np
orase = np.array(["Iași", "Cluj", "Iași", "Brașov", "Cluj"])
valori, coduri = np.unique(orase, return_inverse=True)
print(valori)
print(coduri)
print(valori[coduri])
Rezultat
['Brașov' 'Cluj' 'Iași']
[2 1 2 0 1]
['Iași' 'Cluj' 'Iași' 'Brașov' 'Cluj']
Greșeli frecvente
- Te aștepți ca valorile să rămână în ordinea apariției.
np.unique()le sortează; pentru ordinea apariției sortează indicii dinreturn_index:valori[np.argsort(prima)]. - Uiți că, odată cu
return_counts=True, rezultatul devine un tuplu și scriilen(np.unique(a, return_counts=True)), care dă 2. Despachetează în două variabile.
Comenzi înrudite
np.sort(): Sortează elementele unui tablou: np.sort returnează o copie, a.sort() sortează pe loc; ordinea descrescătoare cu [::-1].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ă.Măști booleene: Selectează elementele care îndeplinesc o condiție, cu un tablou de True/False pus între paranteze pătrate.