remplacer les valeurs dans un tableau
Question
comme valeur de remplacement pour une autre personne dans une opération avec des tableaux, ou comment effectuer une recherche dans un tableau et remplacer une valeur par une autre
par exemple:
array ([[NaN, 1., 1., 1., 1., 1., 1.]
[1., NaN, 1., 1., 1., 1., 1.]
[1., 1., NaN, 1., 1., 1., 1.]
[1., 1., 1., NaN, 1., 1., 1.]
[1., 1., 1., 1., NaN, 1., 1.]
[1., 1., 1., 1., 1., NaN, 1.]
[1., 1., 1., 1., 1., 1., NaN]])
où il peut remplacer NaN par 0. merci pour toute réponse
La solution
Vous pouvez faire ceci:
import numpy as np
x=np.array([[np.NaN, 1., 1., 1., 1., 1., 1.],[1., np.NaN, 1., 1., 1., 1., 1.],[1., 1., np.NaN, 1., 1., 1., 1.], [1., 1., 1., np.NaN, 1., 1., 1.], [1., 1., 1., 1., np.NaN, 1., 1.],[1., 1., 1., 1., 1., np.NaN, 1.], [1., 1., 1., 1., 1., 1., np.NaN]])
x[np.isnan(x)]=0
np.isnan (x)
renvoie un tableau booléen qui est True
où x
est NaN
.
x [boolean_array] = 0
emploie True .
Pour une excellente introduction à l'indexation sophistiquée et bien plus encore, voir également le numpybook .
Autres conseils
ces jours-ci, il y a la fonction spéciale:
a = numpy.nan_to_num(a)
Voici l'exemple de tableau dans la question:
import numpy as np
a = np.where(np.eye(7), np.nan, 1)
Vous pouvez utiliser numpy.where . et numpy.isnan permet de créer un nouveau tableau b
:
b = np.where(np.isnan(a), 0, a)
Ou utilisez une fonction sur place pour modifier directement le tableau a
:
np.place(a, np.isnan(a), 0) # returns None