ConsigneFiltre et remplace des valeurs avec des conditions booléennes
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)) # 5print('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 inclusnotes[(notes < 5) | (notes > 18)] # extrêmesnotes[~((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 tousnp.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 →