當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy interpolate.interp2d用法及代碼示例


本文簡要介紹 python 語言中 scipy.interpolate.interp2d 的用法。

用法:

class  scipy.interpolate.interp2d(x, y, z, kind='linear', copy=True, bounds_error=False, fill_value=None)#

在二維網格上插值。

x,yz是用於逼近某個函數 f 的值數組:z = f(x, y)它返回一個標量值z.此類返回一個函數,其調用方法使用樣條插值來查找新點的值。

如果xy表示一個規則的網格,考慮使用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) 如果xy指定列和行坐標或len(z) == len(x) == len(y)如果xy指定每個點的坐標。

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()
scipy-interpolate-interp2d-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.interp2d。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。