scipy.interpolate.interp2d

class scipy.interpolate.interp2d(x, y, z, kind='linear', copy=True, bounds_error=False, fill_value=None)[源代码]

在2-D网格上插值。

xyz 是用于逼近某个函数f的值数组: z = f(x, y) ,它返回标量值。 z 。该类返回一个函数,该函数的调用方法使用样条插值来查找新点的值。

如果 xy 表示规则网格,请考虑使用 RectBivariateSpline

如果 z 是一个向量值,请考虑使用 interpn

请注意,调用 interp2d 输入值中存在NAN会导致未定义的行为。

参数
x, yarray_like

定义数据点坐标的数组。

如果这些点位于规则网格上, x 可以指定列坐标和 y 行坐标,例如::

>>> x = [0,1,2];  y = [0,3]; z = [[1,2,3], [4,5,6]]

否则, xy 必须指定每个点的完整坐标,例如::

>>> x = [0,1,2,0,1,2];  y = [0,0,0,3,3,3]; z = [1,2,3,4,5,6]

如果 xy 是多维的,它们在使用前会被展平。

zarray_like

要在数据点处插值的函数值。如果 z 是多维数组,则在使用前将其展平。被展平的一条线的长度 z 数组为长度 (x )*镜头 (y )如果 xy 指定列和行坐标或 len(z) == len(x) == len(y) 如果 xy 指定每个点的坐标。

kind{‘线性’,‘立方’,‘五次’},可选

要使用的样条线插值的类型。默认值为“线性”。

copy布尔值,可选

如果为True,则该类创建x、y和z的内部副本。如果为False,则可以使用引用。默认情况下是复制。

bounds_error布尔值,可选

如果为True,则在输入数据(x,y)的域外请求内插值时,将引发ValueError。如果为false,则 fill_value 是使用的。

fill_value数字,可选

如果提供,则为插值域外的点使用的值。如果省略(无),域外的值将通过最近邻外推进行外推。

参见

RectBivariateSpline

如果输入数据位于格网上,则二维插值速度会快得多

bisplrep, bisplev

基于FITPACK的样条插值

BivariateSpline

FITPACK例程的较新包装器

interp1d

此函数的一维版本

注意事项

沿插值轴所需的最小数据点数量为 (k+1)**2 ,线性k=1,三次k=3,五次插值k=5。

内插器由以下结构构成 bisplrep ,平滑因子为0。如果需要对平滑进行更多控制, bisplrep 应该直接使用。

示例

构建二维栅格并在其上插值:

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

方法:

__call__ \(X,y[, dx, dy, assume_sorted] )

对函数进行插值。