Lineare Interpolation mithilfe von numpy.interp
Habe ich ein 1-dimensionales array A der Schwimmer, die ist meistens gut, aber ein paar der Werte fehlen. Fehlende Daten zu ersetzen, die mit nan(not a number). Ich habe ersetzen die fehlenden Werte in die Arrays, die durch lineare interpolation aus den in der Nähe gute Werte. So zum Beispiel:
F7(np.array([10.,20.,nan,40.,50.,nan,30.]))
zurückkehren sollte
np.array([10.,20.,30.,40.,50.,40.,30.]).
Was ist der beste Weg, dies zu tun mit Python?
Jede Hilfe wäre sehr geschätzt werden
Dank
- Meinst du das wirklich lineare interpolation? Oder tun Sie eigentlich im Durchschnitt? -- Ausserdem gehe ich davon aus, dass die ersten und letzten Werte sind garantiert nicht NaN?
- Es war nur eine Durchschnittliche auf das Beispiel. Die lineare interpolation sollte wirklich finden Sie einfach die fehlenden Werte in eine lineare Gleichung. Und ja, die ersten und letzten Werte nicht NaN.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
scipy.interpolieren.interp1d
:BEARBEITEN: es dauerte eine Weile, um herauszufinden, wie
np.interp
arbeiten, aber das tun können, den job als gut:len(x)
eher als*x.shape
. Es scheint etwas deutlicher aus, da wir nur tun 1D-eh (und dies nicht verallgemeinern auf mehr Dimensionen) - aber +1 für eine funktionierende interpolieren Lösung.np.arange(len(x))
zweimal, warum nicht tun Sie es einfach einmal und speichern Sie das Ergebnis? Auch denke ich nicht, dass Sie brauchenscipy
für diese.np.interp
scheint, wie es wäre das gleiche tun, in diesem SzenarioIch würde mit
pandas
. Ein minimalistischer Ansatz mit einem oneliner:Oder wenn Sie möchten, um es als ein array:
Nicht schaffen, neue Serie Objekt oder neue Elemente in der Serie jedes mal, wenn Sie wollen, interpolieren von Daten verwenden RedBlackPy. Siehe code-Beispiel unten:
Der letzten Ausgabe ist folgende: