scipy.interpolate.

interp1d#

class scipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)[source]#

插值一维函数。

遗留

此类被认为是遗留类,将不再接收更新。这也意味着它可能会在未来的 SciPy 版本中被移除。有关 interp1d 的预期替换指南,请参阅 一维插值.

xy 是用于近似某个函数 f 的值数组: y = f(x)。此类返回一个函数,其调用方法使用插值来查找新点的值。

参数:
x(npoints, ) array_like

一个一维实数值数组。

y(…, npoints, …) array_like

一个 N 维实数值数组。沿着插值轴的 y 的长度必须等于 x 的长度。使用 axis 参数选择正确的轴。与其他插值器不同,默认插值轴是 y 的最后一个轴。

kindstr 或 int,可选

指定插值类型,以字符串或指定要使用的样条插值器阶数的整数表示。该字符串必须是以下之一:‘linear’,‘nearest’,‘nearest-up’,‘zero’,‘slinear’,‘quadratic’,‘cubic’,‘previous’ 或 ‘next’。‘zero’,‘slinear’,‘quadratic’ 和 ‘cubic’ 指的是零阶、一阶、二阶或三阶样条插值;‘previous’ 和 ‘next’ 只是返回点的上一个或下一个值;‘nearest-up’ 和 ‘nearest’ 在插值半整数(例如 0.5、1.5)时有所不同,因为 ‘nearest-up’ 向上取整,而 ‘nearest’ 向下取整。默认值为 ‘linear’。

axisint,可选

y 数组中对应于 x 坐标值的轴。与其他插值器不同,默认值为 axis=-1

copybool,可选

如果为 True,则该类会对 x 和 y 进行内部复制。如果为 False,则如果可能,将使用对 xy 的引用。默认情况下,会进行复制。

bounds_errorbool,可选

如果为 True,则在尝试对超出 x 范围的值(需要外推时)进行插值时,将引发 ValueError。如果为 False,则超出范围的值将被分配 fill_value。默认情况下,除非 fill_value="extrapolate",否则会引发错误。

fill_valuearray_like 或 (array_like, array_like) 或 “extrapolate”,可选
  • 如果为 ndarray(或 float),则此值将用于填充对数据范围之外的请求点的值。如果未提供,则默认值为 NaN。array_like 必须正确广播到非插值轴的维度。

  • 如果为两个元素的元组,则第一个元素用作 x_new < x[0] 的填充值,第二个元素用作 x_new > x[-1] 的填充值。任何不是两个元素的元组(例如,list 或 ndarray,无论形状如何)都被视为单个 array_like 参数,用于两个边界,如 below, above = fill_value, fill_value。使用两个元素的元组或 ndarray 需要 bounds_error=False

    在版本 0.17.0 中添加。

  • 如果为 “extrapolate”,则数据范围之外的点将被外推。

    在版本 0.17.0 中添加。

assume_sortedbool,可选

如果为 False,则 x 的值可以按任何顺序排列,并且它们首先被排序。如果为 True,则 x 必须是一个单调递增值的数组。

另请参阅

splrep, splev

基于 FITPACK 的样条插值/平滑。

UnivariateSpline

FITPACK 例程的面向对象的包装器。

interp2d

二维插值

注释

在输入值中存在 NaN 时调用 interp1d 将导致未定义的行为。

输入值 xy 必须可转换为 float 值,例如 intfloat

如果 x 中的值不唯一,则结果行为是未定义的,并且特定于 kind 的选择,即更改 kind 会改变重复项的行为。

示例

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import interpolate
>>> x = np.arange(0, 10)
>>> y = np.exp(-x/3.0)
>>> f = interpolate.interp1d(x, y)
>>> xnew = np.arange(0, 9, 0.1)
>>> ynew = f(xnew)   # use interpolation function returned by `interp1d`
>>> plt.plot(x, y, 'o', xnew, ynew, '-')
>>> plt.show()
../../_images/scipy-interpolate-interp1d-1.png
属性:
fill_value

填充值。

方法

__call__(x)

评估插值器