Cet article explique comment compter les valeurs dans un tableau NumPy ( ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ ) qui rรฉpondent ร certaines conditions.
- Compter les valeurs dans un tableau avec une condition : ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ()
 - Compter les valeurs par ligne ou par colonne
 - Check if at least one value meets the condition: ๐งโ๐ฉโ.๐โ๐งโ๐ฒโ()
 - Check if all values meet the condition: ๐งโ๐ฉโ.๐โ๐ฅโ๐ฅโ()
 - Multiple conditions
 - Count N๐โN and non-N๐โN values
 - Count infinity (๐ขโ๐งโ๐โ)
 
La taille du tableau (nombre total d’รฉlรฉments) peut รชtre obtenue avec l’attribut ๐ฌโ๐ขโ๐ณโ๐โ .
Pour extraire, supprimer ou remplacer des รฉlรฉments, des lignes ou des colonnes qui rรฉpondent ร certaines conditions, reportez-vous aux articles suivants.
- NumPy : extraire ou supprimer des รฉlรฉments, des lignes et des colonnes qui satisfont aux conditions
 - numpy.where() : manipuler des รฉlรฉments en fonction de conditions
 
La version de NumPy utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions.
import numpy as np print(np.__version__) # 1.26.1 
Compter les valeurs dans un tableau avec une condition : ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ()
๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() compte le nombre de valeurs non nulles dans un tableau.
a = np.arange(12).reshape((3, 4)) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print(np.count_nonzero(a)) # 11 
L’utilisation d’opรฉrateurs de comparaison tels que < , == , != pour comparer ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ avec une valeur scalaire entraรฎne une comparaison รฉlรฉment par รฉlรฉment, produisant un boolรฉen ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
print(a < 4) # [[ True True True True] # [False False False False] # [False False False False]] print(a % 2 == 0) # [[ True False True False] # [ True False True False] # [ True False True False]] 
รtant donnรฉ que T๐ซโ๐ฎโ๐โ est traitรฉ comme 1 et F๐โ๐ฅโ๐ฌโ๐โ comme 0 , ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() peut compter directement le nombre de valeurs T๐ซโ๐ฎโ๐โ , reprรฉsentant les valeurs qui remplissent la condition.
print(np.count_nonzero(a < 4)) # 4 print(np.count_nonzero(a % 2 == 0)) # 6 
๐งโ๐ฉโ.๐ฌโ๐ฎโ๐ฆโ() peut รฉgalement renvoyer le mรชme rรฉsultat, mais ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() est plus rapide.
print(np.sum(a < 4)) # 4 print(np.sum(a % 2 == 0)) # 6 
Compter les valeurs par ligne ou par colonne
Pour les tableaux multidimensionnels, ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() peut traiter chaque axe en spรฉcifiant l’argument ๐โ๐ฑโ๐ขโ๐ฌโ . La valeur par dรฉfaut, ๐โ๐ฑโ๐ขโ๐ฌโ=N๐จโ๐งโ๐โ , compte les valeurs non nulles sur l’ensemble du tableau.
Pour un tableau ร deux dimensions, le paramรจtre ๐โ๐ฑโ๐ขโ๐ฌโ=0 compte les valeurs non nulles par colonne et ๐โ๐ฑโ๐ขโ๐ฌโ=1 les comptes par ligne.
a = np.arange(12).reshape((3, 4)) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print(np.count_nonzero(a < 4)) # 4 print(np.count_nonzero(a < 4, axis=0)) # [1 1 1 1] print(np.count_nonzero(a < 4, axis=1)) # [4 0 0] 
En dรฉfinissant l’argument ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ sur T๐ซโ๐ฎโ๐โ , le rรฉsultat aura le mรชme nombre de dimensions que le tableau d’origine.
print(np.count_nonzero(a < 4, keepdims=True)) # [[4]] print(np.count_nonzero(a < 4, axis=0, keepdims=True)) # [[1 1 1 1]] print(np.count_nonzero(a < 4, axis=1, keepdims=True)) # [[4] # [0] # [0]] 
Notez que l’argument ๐โ๐ฑโ๐ขโ๐ฌโ a รฉtรฉ introduit dans ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() dans NumPy version 1.12, et ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ dans la version 1.19. En revanche, les deux arguments sont disponibles dans ๐งโ๐ฉโ.๐ฌโ๐ฎโ๐ฆโ() depuis la version 1.7. Par consรฉquent, pour les versions antรฉrieures ร la version 1.12, pensez ร utiliser ๐งโ๐ฉโ.๐ฌโ๐ฎโ๐ฆโ() .
Vรฉrifiez si au moins une valeur rรฉpond ร la condition : ๐งโ๐ฉโ.๐โ๐งโ๐ฒโ()
๐งโ๐ฉโ.๐โ๐งโ๐ฒโ() renvoie T๐ซโ๐ฎโ๐โ si au moins un รฉlรฉment du tableau spรฉcifiรฉ est T๐ซโ๐ฎโ๐โ ; sinon, elle renvoie F๐โ๐ฅโ๐ฌโ๐โ .
Cette fonction est utile pour dรฉterminer si un รฉlรฉment rรฉpond ร une condition spรฉcifiรฉe.
a = np.arange(12).reshape((3, 4)) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print(np.any(a < 4)) # True print(np.any(a > 100)) # False 
Similaire ร ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() , ๐งโ๐ฉโ.๐โ๐งโ๐ฒโ() ร l’argument ๐โ๐ฑโ๐ขโ๐ฌโ .
print(np.any(a < 4, axis=0)) # [ True True True True] print(np.any(a < 4, axis=1)) # [ True False False] 
Bien qu’aucun exemple ne soit fourni ici, notez que ๐งโ๐ฉโ.๐โ๐งโ๐ฒโ() prend รฉgalement en charge l’argument ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ .
Vรฉrifiez si toutes les valeurs correspondent ร la condition : ๐งโ๐ฉโ.๐โ๐ฅโ๐ฅโ()
๐งโ๐ฉโ.๐โ๐ฅโ๐ฅโ() renvoie T๐ซโ๐ฎโ๐โ si tous les รฉlรฉments du tableau spรฉcifiรฉs sont T๐ซโ๐ฎโ๐โ ; sinon, elle renvoie F๐โ๐ฅโ๐ฌโ๐โ .
Cette fonction est utile pour dรฉterminer si tous les รฉlรฉments rรฉpondent ร une condition spรฉcifiรฉe.
a = np.arange(12).reshape((3, 4)) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print(np.all(a < 4)) # False print(np.all(a < 100)) # True 
Similaire ร ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() , ๐งโ๐ฉโ.๐โ๐ฅโ๐ฅโ() ร l’argument ๐โ๐ฑโ๐ขโ๐ฌโ .
print(np.all(a < 4, axis=0)) # [False False False False] print(np.all(a < 4, axis=1)) # [ True False False] 
Bien qu’aucun exemple ne soit fourni ici, notez que ๐งโ๐ฉโ.๐โ๐ฅโ๐ฅโ() prend รฉgalement en charge l’argument ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ .
Conditions multiples
Pour combiner plusieurs conditions, placez chaque expression conditionnelle entre parenthรจses () et reliez-les par & (AND) ou | (OU). La nรฉgation ~ (NOT) est รฉgalement utilisable.
a = np.arange(12).reshape((3, 4)) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] print((a < 4) | (a % 2 == 0)) # [[ True True True True] # [ True False True False] # [ True False True False]] print(np.count_nonzero((a < 4) | (a % 2 == 0))) # 8 print(np.count_nonzero((a < 4) | (a % 2 == 0), axis=0)) # [3 1 3 1] print(np.count_nonzero((a < 4) | (a % 2 == 0), axis=1)) # [4 2 2] 
Notez que l’utilisation de ๐โ๐งโ๐โ ou ๐จโ๐ซโ , ou l’omission de parenthรจses, gรฉnรจre une erreur.
Comptez les valeurs N๐โN et non- N๐โN
Par exemple, N๐โN peut se produire lors de la lecture d’un fichier CSV avec des donnรฉes manquantes.
- รฉchantillon_nan.csv
 - NumPy : lecture et รฉcriture de fichiers CSV (np.loadtxt, np.genfromtxt, np.savetxt)
 
a_nan = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a_nan) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] 
รtant donnรฉ que la comparaison de N๐โN avec N๐โN renvoie toujours F๐โ๐ฅโ๐ฌโ๐โ , vous devez utiliser ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() pour compter les valeurs N๐โN .
print(np.nan == np.nan) # False print(a_nan == np.nan) # [[False False False False] # [False False False False] # [False False False False]] print(np.isnan(a_nan)) # [[False False True False] # [False True True False] # [False False False False]] 
Ensuite, comme dans les exemples prรฉcรฉdents, comptez le nombre de T๐ซโ๐ฎโ๐โ avec ๐งโ๐ฉโ.๐โ๐จโ๐ฎโ๐งโ๐ญโ_๐งโ๐จโ๐งโ๐ณโ๐โ๐ซโ๐จโ() ou ๐งโ๐ฉโ.๐ฌโ๐ฎโ๐ฆโ() .
print(np.count_nonzero(np.isnan(a_nan))) # 3 print(np.count_nonzero(np.isnan(a_nan), axis=0)) # [0 1 2 0] print(np.count_nonzero(np.isnan(a_nan), axis=1)) # [1 2 0] 
Pour compter les valeurs non N๐โN , utilisez la nรฉgation ~ .
print(~np.isnan(a_nan)) # [[ True True False True] # [ True False False True] # [ True True True True]] 
Pour remplacer ou supprimer des valeurs manquantes, reportez-vous aux articles suivants.
- NumPy : remplacez NaN (np.nan) en utilisant np.nan_to_num() et np.isnan()
 - NumPy : Supprimer NaN (np.nan) d’un tableau
 
Compter l’infini ( ๐ขโ๐งโ๐โ )
Pour vรฉrifier si une valeur est infinie ( ๐ขโ๐งโ๐โ ), utilisez la fonction ๐งโ๐ฉโ.๐ขโ๐ฌโ๐ขโ๐งโ๐โ() , qui renvoie T๐ซโ๐ฎโ๐โ pour l’infini positif et nรฉgatif.
a_inf = np.array([-np.inf, 0, np.inf]) print(a_inf) # [-inf 0. inf] print(np.isinf(a_inf)) # [ True False True] 
๐งโ๐ฉโ.๐ขโ๐ฌโ๐ฉโ๐จโ๐ฌโ๐ขโ๐งโ๐โ() , qui renvoie T๐ซโ๐ฎโ๐โ pour l’infini positif, et ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐ โ๐ขโ๐งโ๐โ() , qui renvoie T๐ซโ๐ฎโ๐โ pour l’infini nรฉgatif, sont รฉgalement fournis.
print(np.isposinf(a_inf)) # [False False True] print(np.isneginf(a_inf)) # [ True False False] 
Puisque l’infini peut รชtre comparรฉ ร == , vous pouvez รฉgalement utiliser == pour vรฉrifier s’il s’agit d’un infini positif ou nรฉgatif.
print(a_inf == np.inf) # [False False True] print(a_inf == -np.inf) # [ True False False] 
Une fois le tableau boolรฉen obtenu, comptez simplement T๐ซโ๐ฎโ๐โ comme dans les exemples prรฉcรฉdents.
print(np.count_nonzero(np.isinf(a_inf))) # 2 print(np.count_nonzero(np.isposinf(a_inf))) # 1 print(np.count_nonzero(np.isneginf(a_inf))) # 1 
Pour les opรฉrations avec l’infini ( ๐ขโ๐งโ๐โ ) en Python, reportez-vous ร l’article suivant.
