本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。