Ce face Măști booleene
O comparație pe un tablou, de exemplu note >= 5, dă un tablou de aceeași formă cu True și False: o mască. Pusă între paranteze pătrate, note[note >= 5], masca păstrează doar elementele unde este True.
Condițiile se combină cu & (și), | (sau) și ~ (negare), nu cu and, or, not. Fiecare condiție trebuie pusă în paranteze, pentru că & și | au prioritate mai mare decât comparațiile.
np.any(masca) spune dacă măcar un element este True, iar np.all(masca) dacă toate sunt. masca.sum() numără valorile True. Prin mască poți și atribui: a[a < 0] = 0.
Parametri
| Parametru | Descriere |
|---|---|
mască |
Tablou de bool cu aceeași formă ca tabloul selectat (sau ca axa selectată). |
Ce returnează
Un tablou 1D nou (copie) cu elementele selectate. np.any/np.all returnează True sau False.
Exemple
Exemplul 1: Note de trecere
import numpy as np
note = np.array([9, 4, 7, 10, 3, 6])
masca = note >= 5
print(masca)
print(note[masca])
print("Promovați:", masca.sum())
Rezultat
[ True False True True False True]
[ 9 7 10 6]
Promovați: 4
Exemplul 2: Condiții combinate
Parantezele din jurul fiecărei condiții sunt obligatorii.
import numpy as np
preturi = np.array([12, 45, 8, 60, 25, 33])
print(preturi[(preturi >= 10) & (preturi <= 40)])
print(preturi[(preturi < 10) | (preturi > 50)])
print(preturi[~(preturi > 30)])
Rezultat
[12 25 33]
[ 8 60]
[12 8 25]
Exemplul 3: np.any, np.all și înlocuire
import numpy as np
stoc = np.array([5, -2, 0, 8, -1])
print("Există stoc negativ:", np.any(stoc < 0))
print("Tot stocul pozitiv:", np.all(stoc > 0))
stoc[stoc < 0] = 0
print(stoc)
Rezultat
Există stoc negativ: True
Tot stocul pozitiv: False
[5 0 0 8 0]
Greșeli frecvente
- Folosești
and/or:a[(a > 2) and (a < 8)]dăValueError: The truth value of an array ... is ambiguous. Folosește&și|. - Uiți parantezele:
a > 2 & a < 8se calculează caa > (2 & a) < 8și dă eroare sau un rezultat greșit. - Scrii
if a > 5:pentru un tablou. Condiția este ambiguă; spune explicitif np.any(a > 5):sauif np.all(a > 5):.
Comenzi înrudite
Indexare și slicing: Accesează un element, o bucată, un rând sau o coloană dintr-un tablou NumPy cu paranteze pătrate.Indexare cu liste de indici: Selectează mai multe elemente, rânduri sau coloane deodată, dând o listă de poziții (fancy indexing).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ă.np.clip(): Limitează valorile unui tablou la un interval: ce e sub minim devine minimul, ce e peste maxim devine maximul.