Skip to content

Dans NumPy, pour supprimer des lignes ou des colonnes contenant N๐šโ€ŒN ( ๐งโ€Œ๐ฉโ€Œ.๐งโ€Œ๐šโ€Œ๐งโ€Œ ) d’un tableau ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซ๐šโ€Œ๐ฒโ€Œ ), utilisez ๐งโ€Œ๐ฉโ€Œ.๐ขโ€Œ๐ฌโ€Œ๐งโ€Œ๐šโ€Œ๐งโ€Œ() pour identifier N๐šโ€ŒN et des mรฉthodes comme ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() ou ๐šโ€Œ๐ฅโ€Œ๐ฅโ€Œ() pour extraire les lignes ou les colonnes qui ne contiennent pas N๐šโ€ŒN .

De plus, vous pouvez supprimer toutes les valeurs N๐šโ€ŒN d’un tableau, mais cela aplatira le tableau.

Pour les bases de la gestion de N๐šโ€ŒN en Python, reportez-vous ร  l’article suivant.

Pour remplacer N๐šโ€ŒN par d’autres valeurs au lieu de les supprimer, reportez-vous ร  l’article suivant.

La version de NumPy utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions. Par exemple, envisagez de lire le fichier CSV suivant, qui contient des donnรฉes manquantes, en utilisant ๐งโ€Œ๐ฉโ€Œ.๐ โ€Œ๐žโ€Œ๐งโ€Œ๐Ÿโ€Œ๐ซโ€Œ๐จโ€Œ๐ฆโ€Œ๐ญโ€Œ๐ฑโ€Œ๐ญโ€Œ() .

import numpy as np print(np.__version__) # 1.26.1 a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] 

Supprimer tous les N๐šโ€ŒN d’un tableau

Vous pouvez utiliser ๐งโ€Œ๐ฉโ€Œ.๐ขโ€Œ๐ฌโ€Œ๐งโ€Œ๐šโ€Œ๐งโ€Œ() pour vรฉrifier si les valeurs d’un ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ sont N๐šโ€ŒN .

a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.isnan(a)) # [[False False True False] # [False True True False] # [False False False False]] 

L’application de l’opรฉrateur de nรฉgation ( ~ ) ร  ce ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ rรฉsultant transforme N๐šโ€ŒN en F๐šโ€Œ๐ฅโ€Œ๐ฌโ€Œ๐žโ€Œ , qui peut รชtre utilisรฉ comme masque pour supprimer N๐šโ€ŒN (extraire les valeurs non NaN). ร‰tant donnรฉ que le nombre d’รฉlรฉments restants change, le ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ rรฉsultant ne conserve pas la mรชme forme que le ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ d’origine , mais devient aplati (converti en unidimensionnel).

print(~np.isnan(a)) # [[ True True False True] # [ True False False True] # [ True True True True]] print(a[~np.isnan(a)]) # [11. 12. 14. 21. 24. 31. 32. 33. 34.] 

Supprimer les lignes contenant N๐šโ€ŒN

Pour supprimer les lignes contenant N๐šโ€ŒN , appelez la mรฉthode ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() sur le ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซ๐šโ€Œ๐ฒโ€Œ gรฉnรฉrรฉ par ๐งโ€Œ๐ฉโ€Œ.๐ขโ€Œ๐ฌโ€Œ๐งโ€Œ๐šโ€Œ๐งโ€Œ() . La mรฉthode ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() renvoie T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ s’il ya au moins un T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ dans ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ .

En dรฉfinissant ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 dans ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() , il vรฉrifie s’il ya au moins un T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ dans chaque ligne, indiquant la prรฉsence de N๐šโ€ŒN .

a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.isnan(a)) # [[False False True False] # [False True True False] # [False False False False]] print(np.isnan(a).any(axis=1)) # [ True True False] 

En utilisant l’opรฉrateur de nรฉgation ( ~ ) pour รฉchanger T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ et F๐šโ€Œ๐ฅโ€Œ๐ฌโ€Œ๐žโ€Œ , les lignes sans N๐šโ€ŒN deviennent T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ .

print(~np.isnan(a).any(axis=1)) # [False False True] 

En appliquant ce ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ aux lignes (la premiรจre dimension) du ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ d’origine , vous peut supprimer les lignes avec N๐šโ€ŒN (extraire les lignes sans N๐šโ€ŒN ).

print(a[~np.isnan(a).any(axis=1), :]) # [[31. 32. 33. 34.]] 

Vous pouvez omettre la spรฉcification de la colonne ( : ) comme indiquรฉe ci-dessous.

print(a[~np.isnan(a).any(axis=1)]) # [[31. 32. 33. 34.]] 

Pour supprimer uniquement les lignes oรน tous les รฉlรฉments sont N๐šโ€ŒN , utilisez ๐šโ€Œ๐ฅโ€Œ๐ฅโ€Œ() au lieu de ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() .

Le paramรจtre ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=1 vรฉrifie si tous les รฉlรฉments de chaque ligne sont T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ . Ici, ๐งโ€Œ๐ฉโ€Œ.๐งโ€Œ๐šโ€Œ๐งโ€Œ est attribuรฉ aux รฉlรฉments ร  des fins d’explication.

a[1, 0] = np.nan a[1, 3] = np.nan print(a) # [[11. 12. nan 14.] # [nan nan nan nan] # [31. 32. 33. 34.]] print(np.isnan(a).all(axis=1)) # [False True False] print(~np.isnan(a).all(axis=1)) # [ True False True] print(a[~np.isnan(a).all(axis=1)]) # [[11. 12. nan 14.] # [31. 32. 33. 34.]] 

Supprimer les colonnes contenant N๐šโ€ŒN

Le processus de suppression des colonnes contenant N๐šโ€ŒN est similaire ร  celui utilisรฉ pour les lignes.

L’utilisation de ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() avec ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ=0 vรฉrifie s’il ya au moins un T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ dans chaque colonne, indiquant la prรฉsence de N๐šโ€ŒN . Appliquez l’opรฉrateur de nรฉgation ( ~ ) pour convertir les colonnes sans N๐šโ€ŒN en T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ .

a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.isnan(a)) # [[False False True False] # [False True True False] # [False False False False]] print(np.isnan(a).any(axis=0)) # [False True True False] print(~np.isnan(a).any(axis=0)) # [ True False False True] 

En applique ce ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ aux colonnes (la deuxiรจme dimension) du ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ d’origine , vous peut supprimer les colonnes avec N๐šโ€ŒN (extraire les colonnes sans N๐šโ€ŒN ).

print(a[:, ~np.isnan(a).any(axis=0)]) # [[11. 14.] # [21. 24.] # [31. 34.]] 

Pour supprimer uniquement les colonnes oรน tous les รฉlรฉments sont N๐šโ€ŒN , utilisez ๐šโ€Œ๐ฅโ€Œ๐ฅโ€Œ() au lieu de ๐šโ€Œ๐งโ€Œ๐ฒโ€Œ() .

a[2, 2] = np.nan print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. nan 34.]] print(np.isnan(a).all(axis=0)) # [False False True False] print(~np.isnan(a).all(axis=0)) # [ True True False True] print(a[:, ~np.isnan(a).all(axis=0)]) # [[11. 12. 14.] # [21. nan 24.] # [31. 32. 34.]]