当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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