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

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top