__call__#
- BivariateSpline.__call__(x, y, dx=0, dy=0, grid=True)[Quelle]#
Evaluieren des Splines oder seiner Ableitungen an gegebenen Positionen.
- Parameter:
- x, yarray_like
Eingabekoordinaten.
Wenn grid False ist, werten Sie die Spline an den Punkten
(x[i], y[i]), i=0, ..., len(x)-1aus. Die Standard-Numpy-Broadcasting wird befolgt.Wenn grid True ist: Werten Sie die Spline an den durch die Koordinaten-Arrays x und y definierten Gitterpunkten aus. Die Arrays müssen aufsteigend sortiert sein.
Die Reihenfolge der Achsen ist konsistent mit
np.meshgrid(..., indexing="ij")und inkonsistent mit der Standardreihenfolgenp.meshgrid(..., indexing="xy").- dxint
Ordnung der x-Ableitung
Hinzugefügt in Version 0.14.0.
- dyint
Ordnung der y-Ableitung
Hinzugefügt in Version 0.14.0.
- gridbool
Ob die Ergebnisse auf einem Gitter, das von den Eingabearrays aufgespannt wird, oder an Punkten, die durch die Eingabearrays spezifiziert werden, ausgewertet werden sollen.
Hinzugefügt in Version 0.14.0.
Beispiele
Angenommen, wir wollen eine exponentiell abfallende Funktion in 2 Dimensionen bilinear interpolieren.
>>> import numpy as np >>> from scipy.interpolate import RectBivariateSpline
Wir sampeln die Funktion auf einem groben Gitter. Beachten Sie, dass die Standard-`indexing="xy"` von `meshgrid` nach der Interpolation zu einem unerwarteten (transponierten) Ergebnis führen würde.
>>> xarr = np.linspace(-3, 3, 100) >>> yarr = np.linspace(-3, 3, 100) >>> xgrid, ygrid = np.meshgrid(xarr, yarr, indexing="ij")
Die zu interpolierende Funktion fällt entlang einer Achse schneller ab als entlang der anderen.
>>> zdata = np.exp(-np.sqrt((xgrid / 2) ** 2 + ygrid**2))
Als Nächstes sampeln wir auf einem feineren Gitter mittels Interpolation (kx=ky=1 für bilinear).
>>> rbs = RectBivariateSpline(xarr, yarr, zdata, kx=1, ky=1) >>> xarr_fine = np.linspace(-3, 3, 200) >>> yarr_fine = np.linspace(-3, 3, 200) >>> xgrid_fine, ygrid_fine = np.meshgrid(xarr_fine, yarr_fine, indexing="ij") >>> zdata_interp = rbs(xgrid_fine, ygrid_fine, grid=False)
Und prüfen durch Plotten beider Ergebnisse, ob sie mit der Eingabe übereinstimmen.
>>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> ax1 = fig.add_subplot(1, 2, 1, aspect="equal") >>> ax2 = fig.add_subplot(1, 2, 2, aspect="equal") >>> ax1.imshow(zdata) >>> ax2.imshow(zdata_interp) >>> plt.show()