interp1d#
- class scipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)[源代码][源代码]#
插值一个一维函数。
传统
此类被视为遗留类,将不再接收更新。这也可能意味着它将在未来的 SciPy 版本中被移除。有关
interp1d
的预期替代指南,请参阅 教程-插值_1D部分。x 和 y 是用于近似某个函数 f:
y = f(x)
的值数组。此类返回一个函数,其调用方法使用插值来查找新点的值。- 参数:
- x(npoints, ) array_like
一个实数值的一维数组。
- y(…, npoints, …) array_like
一个 N 维实数数组。y 沿插值轴的长度必须等于 x 的长度。使用
axis
参数选择正确的轴。与其他插值器不同,默认的插值轴是 y 的最后一个轴。- 种类str 或 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’。
- 轴int, 可选
y
数组中对应于 x 坐标值的轴。与其他插值器不同,默认为axis=-1
。- 复制bool, 可选
如果
True
,该类会创建 x 和 y 的内部副本。如果False
,则尽可能使用对x
和y
的引用。默认是复制。- bounds_errorbool, 可选
如果为True,则在尝试对x范围之外的值进行插值时(需要外推时),会引发ValueError。如果为False,则超出范围的值将被赋值为`fill_value`。默认情况下,除非``fill_value=”extrapolate”``,否则会引发错误。
- fill_value类似数组或(类似数组,类似数组)或“外推”,可选
如果是一个 ndarray(或 float),这个值将被用于填充数据范围之外的请求点。如果没有提供,则默认值为 NaN。类数组对象必须能够正确地广播到非插值轴的维度。
如果是一个两元素的元组,那么第一个元素用于
x_new < x[0]
的填充值,第二个元素用于x_new > x[-1]
的填充值。任何不是两元素元组(例如,列表或 ndarray,无论形状如何)都被视为单个类数组参数,意味着在两个边界上都使用below, above = fill_value, fill_value
。使用两元素元组或 ndarray 需要bounds_error=False
。Added in version 0.17.0.
如果选择“外推”,则数据范围外的点将被外推。
Added in version 0.17.0.
- assume_sortedbool, 可选
如果为 False,x 的值可以是任意顺序,它们会先进行排序。如果为 True,x 必须是一个单调递增值的数组。
- 属性:
fill_value
填充值。
方法
__call__
(x)评估插值函数
参见
splrep
,splev
基于 FITPACK 的样条插值/平滑。
UnivariateSpline
一个面向对象的 FITPACK 例程包装器。
interp2d
2-D 插值
注释
在输入值中存在 NaNs 的情况下调用
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()