Comment supprimer les valeurs NaN du tableau NumPy (3 méthodes)
Vous pouvez utiliser les méthodes suivantes pour supprimer les valeurs NaN d’un tableau NumPy :
Méthode 1 : utilisez isnan()
new_data = data[~np.isnan(data)]
Méthode 2 : utilisez isfinite()
new_data = data[np.isfinite(data)]
Méthode 3 : utilisez logical_not()
new_data = data[np.logical_not(np.isnan(data))]
Chacune de ces méthodes produit le même résultat, mais la première méthode est la plus courte à saisir et a donc tendance à être utilisée le plus souvent.
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : Supprimer les valeurs NaN à l’aide d’isnan()
Le code suivant montre comment supprimer les valeurs NaN d’un tableau NumPy à l’aide de la fonction isnan() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[~np.isnan(data)]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Notez que les deux valeurs NaN ont été supprimées avec succès du tableau NumPy.
Cette méthode conserve simplement tous les éléments du tableau qui ne sont pas des valeurs (~) NaN.
Exemple 2 : Supprimer les valeurs NaN à l’aide d’isfinite()
Le code suivant montre comment supprimer les valeurs NaN d’un tableau NumPy à l’aide de la fonction isfinite() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[np.isfinite(data)]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Notez que les deux valeurs NaN ont été supprimées avec succès du tableau NumPy.
Cette méthode conserve simplement tous les éléments du tableau qui sont des valeurs finies.
Puisque les valeurs NaN ne sont pas finies, elles sont supprimées du tableau.
Exemple 3 : Supprimer les valeurs NaN à l’aide de logical_not()
Le code suivant montre comment supprimer les valeurs NaN d’un tableau NumPy à l’aide de la fonction logical_not() :
import numpy as np
#create array of data
data = np.array([4, np.nan, 6, np.nan, 10, 11, 14, 19, 22])
#define new array of data with nan values removed
new_data = data[np.logical_not(np.isnan(data))]
#view new array
print(new_data)
[ 4. 6. 10. 11. 14. 19. 22.]
Notez que les deux valeurs NaN ont été supprimées avec succès du tableau NumPy.
Bien que cette méthode soit équivalente aux deux précédentes, elle nécessite plus de saisie et n’est donc pas utilisée aussi souvent.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :
Pandas : Comment remplacer les chaînes vides par NaN
Pandas : comment remplacer les valeurs NaN par une chaîne