Frage

Ich suche nach dem Python-Äquivalent der folgenden Matlab-Anweisung:

vq interp1(x,y, xq,'nearest','extrap')

Es sieht so aus als ob interp(xq, x, y) Funktioniert perfekt für die lineare Interpolation/Extrapolation.

Habe ich auch angeschaut

F = scipy.interpolate.interp1d(x, y, kind='nearest')

Dies funktioniert perfekt für die nächstgelegene Methode, führt jedoch keine Extrapolation durch.

Gibt es sonst noch etwas, was ich übersehen habe?Danke.

War es hilfreich?

Lösung

für lineare Interpolation, die mit der nächstgelegenen Interpolation extrapoliert wird, verwenden Sie generationspflichtig.Dies tut dies standardmäßig.

Beispiel:

generasacodicetagpre.

Andernfalls, wenn Sie nur eine nächstgelegene Interpolation überall möchten, wie Sie beschreiben, können Sie es in der kurzen, aber ineffizienten Weise tun: (Sie können dies zu einem One-Liner machen, wenn Sie möchten)

generasacodicetagpre.

oder auf effizientere Weise mitgenehmerisch mitgenerierter Weise:

generasacodicetagpre.

, um die Differenz zwischen dem generakodizidagcode und den nächstgelegenen Interpolationsbeispielen oben darzustellen:

generasacodicetagpre.

Bildbeschreibung hier eingeben

Andere Tipps

In späteren Versionen von SciPy (mindestens v0.19.1+) scipy.interpolate.interp1d hat die Möglichkeit fill_value = “extrapolate”.

Zum Beispiel:

import pandas as pd
>>> s = pd.Series([1, 2, 3])
Out[1]: 
0    1
1    2
2    3
dtype: int64

>>> t = pd.concat([s, pd.Series(index=s.index + 0.1)]).sort_index()
Out[2]: 
0.0    1.0
0.1    NaN
1.0    2.0
1.1    NaN
2.0    3.0
2.1    NaN
dtype: float64

>>> t.interpolate(method='nearest')
Out[3]: 
0.0    1.0
0.1    1.0
1.0    2.0
1.1    2.0
2.0    3.0
2.1    NaN
dtype: float64

>>> t.interpolate(method='nearest', fill_value='extrapolate')
Out[4]: 
0.0    1.0
0.1    1.0
1.0    2.0
1.1    2.0
2.0    3.0
2.1    3.0
dtype: float64

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top