Approfondissons les masques booléens : filtrage avancé, remplacement conditionnel, conditions multiples.
notes = np.array([8, 15, 3, 18, 12, 6, 14, 9, 20, 7])reussis = notes[notes >= 10] # [15 18 12 14 20]
echoues = notes[notes < 10] # [8 3 6 9 7]
print('Nb réussis:', len(reussis)) # 5
print('Moyenne réussis:', notes[notes >= 10].mean()) # 15.8& ET
| OU
~ NONParenthèses obligatoires :
notes[notes >= 10 & notes <= 15] ❌ priorité de & avant >=
notes[(notes >= 10) & (notes <= 15)] ✅
Exemples
notes[(notes >= 10) & (notes <= 15)] # entre 10 et 15 inclus
notes[(notes < 5) | (notes > 18)] # extrêmes
notes[~((notes >= 8) & (notes <= 12))] # hors de [8, 12]np.where(condition, valeur_si_vrai, valeur_si_faux)Fonctionne comme un if/else vectorisé :
notes = np.array([8, 15, 3, 18, 12])
corrigees = np.where(notes < 10, 10, notes) # < 10 → 10
# → [10, 15, 10, 18, 12]Utilisé en 1 argument, renvoie les indices où la condition est vraie :
np.where(notes >= 15) → (array([1, 3]),)notes[notes < 10] = 10 # modifie EN PLACE(notes >= 10).sum() → nombre de True (5)
(notes >= 10).any() → True si au moins un
(notes >= 10).all() → True si tous
np.count_nonzero(notes >= 10) → équivalent à .sum() sur le masque(mask).sum() est un idiome très courant pour compter combien d'éléments respectent une condition.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →