本文簡要介紹 python 語言中 scipy.interpolate.interp2d
的用法。
用法:
class scipy.interpolate.interp2d(x, y, z, kind='linear', copy=True, bounds_error=False, fill_value=None)#
-
在二維網格上插值。
x,y和z是用於逼近某個函數 f 的值數組:
z = f(x, y)
它返回一個標量值z.此類返回一個函數,其調用方法使用樣條插值來查找新點的值。如果x和y表示一個規則的網格,考慮使用
RectBivariateSpline
.如果z是一個向量值,考慮使用scipy.interpolate.interpn.
請注意,調用
interp2d
輸入值中存在NaNs,或者值遞減x一個y導致未定義的行為。- x, y: array_like
定義數據點坐標的數組。數據點坐標需要按升序排序。
如果這些點位於規則網格上,x 可以指定列坐標,y 可以指定行坐標,例如:
>>> x = [0,1,2]; y = [0,3]; z = [[1,2,3], [4,5,6]]
否則,x 和 y 必須指定每個點的完整坐標,例如:
>>> x = [0,1,2,0,1,2]; y = [0,0,0,3,3,3]; z = [1,4,2,5,3,6]
如果 x 和 y 是多維的,則在使用前將它們展平。
- z: array_like
在數據點處插值的函數值。如果z是一個多維數組,假設 Fortran-ordering (order=’F’),在使用之前將其展平。壓扁後的長度z數組是 len(x)*長(y) 如果x和y指定列和行坐標或
len(z) == len(x) == len(y)
如果x和y指定每個點的坐標。- kind: {‘linear’, ‘cubic’, ‘quintic’},可選
要使用的樣條插值類型。默認為‘linear’。
- copy: 布爾型,可選
如果為 True,則該類製作 x、y 和 z 的內部副本。如果為 False,則可以使用引用。默認是複製。
- bounds_error: 布爾型,可選
如果為 True,當在輸入數據 (x,y) 的域之外請求插值時,會引發 ValueError。如果為 False,則使用 fill_value。
- fill_value: 編號,可選
如果提供,則用於插值域之外的點的值。如果省略(無),則域外的值通過nearest-neighbor 外推法進行外推。
參數 ::
注意:
沿插值軸所需的最小數據點數為
(k+1)**2
,k=1 表示線性,k=3 表示三次插值,k=5 表示五次插值。插值器由
bisplrep
構造,平滑因子為 0。如果需要對平滑進行更多控製,應直接使用bisplrep
。要插值的數據點的坐標新新和新必須按升序排序。
interp2d
是遺留的,不建議在新代碼中使用。新代碼應該使用scipy.interpolate.RegularGridInterpolator反而。例子:
構造一個二維網格並在其上插值:
>>> import numpy as np >>> from scipy import interpolate >>> x = np.arange(-5.01, 5.01, 0.25) >>> y = np.arange(-5.01, 5.01, 0.25) >>> xx, yy = np.meshgrid(x, y) >>> z = np.sin(xx**2+yy**2) >>> f = interpolate.interp2d(x, y, z, kind='cubic')
現在使用獲得的插值函數並繪製結果:
>>> import matplotlib.pyplot as plt >>> xnew = np.arange(-5.01, 5.01, 1e-2) >>> ynew = np.arange(-5.01, 5.01, 1e-2) >>> znew = f(xnew, ynew) >>> plt.plot(x, z[0, :], 'ro-', xnew, znew[0, :], 'b-') >>> plt.show()
相關用法
- Python SciPy interpolate.interp1d用法及代碼示例
- Python SciPy interpolate.interpn用法及代碼示例
- Python SciPy interpolate.insert用法及代碼示例
- Python SciPy interpolate.make_interp_spline用法及代碼示例
- Python SciPy interpolate.krogh_interpolate用法及代碼示例
- Python SciPy interpolate.InterpolatedUnivariateSpline用法及代碼示例
- Python SciPy interpolate.BSpline用法及代碼示例
- Python SciPy interpolate.LSQSphereBivariateSpline用法及代碼示例
- Python SciPy interpolate.griddata用法及代碼示例
- Python SciPy interpolate.splder用法及代碼示例
- Python SciPy interpolate.LinearNDInterpolator用法及代碼示例
- Python SciPy interpolate.PPoly用法及代碼示例
- Python SciPy interpolate.NdBSpline用法及代碼示例
- Python SciPy interpolate.pade用法及代碼示例
- Python SciPy interpolate.barycentric_interpolate用法及代碼示例
- Python SciPy interpolate.RegularGridInterpolator用法及代碼示例
- Python SciPy interpolate.NdPPoly用法及代碼示例
- Python SciPy interpolate.approximate_taylor_polynomial用法及代碼示例
- Python SciPy interpolate.RectSphereBivariateSpline用法及代碼示例
- Python SciPy interpolate.sproot用法及代碼示例
- Python SciPy interpolate.splantider用法及代碼示例
- Python SciPy interpolate.CloughTocher2DInterpolator用法及代碼示例
- Python SciPy interpolate.BPoly用法及代碼示例
- Python SciPy interpolate.BarycentricInterpolator用法及代碼示例
- Python SciPy interpolate.splrep用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.interp2d。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。