Ersetzen der Werte in einem Array
Frage
als Ersatzwert für eine andere innerhalb einer Operation mit Arrays, oder wie in einem Array zu suchen, und einen Wert, der durch eine andere ersetzen
Beispiel:
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]])
Dabei gilt es NaN von 0 ersetzen kann. Vielen Dank für jede Antwort
Lösung
Sie können dies tun:
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)
gibt einen boolean-Array, das True
ist überall dort, wo x
NaN
ist.
x[ boolean_array ] = 0
beschäftigt Phantasie Indizierung den Wert 0 zuweisen, wo die boolean-Array True
ist.
Für eine großartige Einführung in Phantasie Indizierung und vieles mehr finden Sie auch die numpybook .
Andere Tipps
in diesen Tagen gibt es die Sonderfunktion:
a = numpy.nan_to_num(a)
Hier ist der Beispiel-Array in der Frage:
import numpy as np
a = np.where(np.eye(7), np.nan, 1)
Sie können entweder numpy.where und numpy.isnan Funktionen ein neues Array erstellen b
:
b = np.where(np.isnan(a), 0, a)
oder verwenden Sie eine in-Place-Funktion, um direkt die a
Array zu ändern:
np.place(a, np.isnan(a), 0) # returns None