scipy.interpolate.

interp1d#

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

对一维函数进行插值。

旧版

此类被认为是旧版,将不再接收更新。虽然我们目前没有计划删除它,但我们建议新代码改用更现代的替代方案。有关 interp1d 的预期替换指南,请参阅 一维插值

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

参数:
x(npoints, ) 类似数组

一个实数值的一维数组。

y(…, npoints, …) 类似数组

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

kindstr 或 int,可选

指定插值的类型,可以是字符串,也可以是指定要使用的样条插值器的阶数的整数。该字符串必须是“linear”、“nearest”、“nearest-up”、“zero”、“slinear”、“quadratic”、“cubic”、“previous”或“next”之一。“zero”、“slinear”、“quadratic”和“cubic”指的是零阶、一阶、二阶或三阶的样条插值;“previous”和“next”仅返回该点的前一个或下一个值;当插值半整数(例如 0.5、1.5)时,“nearest-up”和“nearest”的不同之处在于,“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_value类似数组或 (类似数组, 类似数组) 或 "extrapolate",可选
  • 如果为 ndarray(或浮点数),则此值将用于填充超出数据范围的请求点。如果未提供,则默认为 NaN。类似数组必须正确广播到非插值轴的维度。

  • 如果为两元素元组,则第一个元素用作 x_new < x[0] 的填充值,第二个元素用作 x_new > x[-1] 的填充值。任何不是双元素元组(例如,列表或 ndarray,无论形状如何)的内容都被视为单个类似数组的参数,用于两个边界,如 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)

计算插值