interp1d#
- class scipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)[source]#
插值一维函数(旧版)。
x 和 y 是用于近似某个函数 f:
y = f(x)
的值数组。此类别返回一个函数,其调用方法使用插值来查找新点的值。- 参数:
- x(npoints, ) 类数组
一个一维实数值数组。
- y(…, npoints, …) 类数组
一个 N 维实数值数组。y 沿插值轴的长度必须等于 x 的长度。使用
axis
参数选择正确的轴。与其他插值器不同,默认插值轴是 y 的最后一个轴。- kind字符串或整数,可选
指定插值的种类,可以是字符串或指定要使用的样条插值器阶数的整数。字符串必须是 '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'。
- axis整数,可选
y
数组中与 x 坐标值对应的轴。与其他插值器不同,默认为axis=-1
。- copy布尔值,可选
如果为
True
,则该类会在内部复制 x 和 y。如果为False
,则尽可能使用x
和y
的引用。默认是复制。- bounds_error布尔值,可选
如果为 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_sorted布尔值,可选
如果为 False,x 的值可以是任意顺序,它们将首先被排序。如果为 True,x 必须是一个单调递增值的数组。
- 属性:
fill_value
填充值。
方法
__call__
(x)评估插值函数
另请参阅
splrep
,splev
基于 FITPACK 的样条插值/平滑。
UnivariateSpline
FITPACK 例程的面向对象包装器。
interp2d
二维插值
注意
输入值中存在 NaN 时调用
interp1d
会导致未定义的行为。输入值 x 和 y 必须可转换为 float 值,例如 int 或 float。
如果 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()