scipy.interpolate.LSQBivariateSpline.
__call__#
- LSQBivariateSpline.__call__(x, y, dx=0, dy=0, grid=True)[source]#
在給定位置評估 spline 或其導數。
- 參數:
- x, y類陣列
輸入座標。
如果 grid 為 False,則在點
(x[i], y[i]), i=0, ..., len(x)-1
評估 spline。遵守標準 Numpy 廣播規則。如果 grid 為 True:在由座標陣列 x, y 定義的網格點上評估 spline。陣列必須以遞增順序排序。
軸的順序與
np.meshgrid(..., indexing="ij")
一致,且與預設順序np.meshgrid(..., indexing="xy")
不一致。- dxint
x 導數的次數
在版本 0.14.0 中新增。
- dyint
y 導數的次數
在版本 0.14.0 中新增。
- gridbool
是否要在由輸入陣列展開的網格上評估結果,或在由輸入陣列指定的點上評估結果。
在版本 0.14.0 中新增。
範例
假設我們想要在二維空間中雙線性內插一個指數衰減函數。
>>> import numpy as np >>> from scipy.interpolate import RectBivariateSpline
我們在粗網格上採樣該函數。請注意,meshgrid 的預設 indexing="xy" 會在內插後產生意外(轉置)的結果。
>>> xarr = np.linspace(-3, 3, 100) >>> yarr = np.linspace(-3, 3, 100) >>> xgrid, ygrid = np.meshgrid(xarr, yarr, indexing="ij")
要內插的函數沿一個軸的衰減速度比另一個軸快。
>>> zdata = np.exp(-np.sqrt((xgrid / 2) ** 2 + ygrid**2))
接下來,我們使用內插在更精細的網格上採樣(對於雙線性,kx=ky=1)。
>>> 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)
並透過繪製兩者來檢查結果是否與輸入一致。
>>> 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()