Extrapolieren Sie mit LinearNDInterpolator
Ich habe einen 3D-Datensatz, den ich interpolieren UND linear extrapolieren möchte. Die Interpolation kann problemlos mit erfolgenscipy.interpolate.LinearNDInterpolator
. Das Modul kann nur eine Konstante / nan für Werte außerhalb des Parameterbereichs eingeben, aber ich verstehe nicht, warum es keine Option zum Aktivieren der Extrapolation bieten würde.
Wenn ich mir den Code ansehe, sehe ich, dass das Modul in Cython geschrieben ist. Ohne Erfahrung mit Cython ist es schwierig, mit dem Code zu spielen, um die Extrapolation zu implementieren. Ich kann es in reinem Python-Code schreiben, aber vielleicht hat hier jemand eine bessere Idee? In meinem speziellen Fall handelt es sich um ein konstantes xy-Gitter, aber die z-Werte ändern sich ständig (-100.000), und daher muss die Interpolation schnell sein, da die Interpolation bei jeder Änderung der z-Werte ausgeführt wird.
Nehmen wir zum Beispiel an, ich hätte ein Gitter wie das angeforderte
xyPairs = [[-1.0, 0.0], [-1.0, 4.0],
[-0.5, 0.0], [-0.5, 4.0],
[-0.3, 0.0], [-0.3, 4.0],
[+0.0, 0.0], [+0.0, 4.0],
[+0.2, 0.0], [+0.2, 4.0]]
und lassen Sie uns sagen, ich möchte Werte bei berechnenx = -1.5, -0.8, +0.5
undy = -0.2, +0.2, +0.5
. Derzeit führe ich eine 1d-Interpolation / Extrapolation entlang der x-Achse für jeden y-Wert und dann entlang der y-Achse für jeden x-Wert durch. Die Extrapolation erfolgt durch die zweite Funktion inryggyr's answer
.