InterpolatedUnivariateSpline#
- class scipy.interpolate.InterpolatedUnivariateSpline(x, y, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)[源代码]#
给定一组数据点的 1-D 插值样条。
旧版
此类被认为是旧版,将不再接收更新。 虽然我们目前没有计划删除它,但我们建议新代码使用更现代的替代方案。 具体来说,我们建议使用
make_interp_spline
来代替。将次数为 k 的样条 y = spl(x) 拟合到提供的 x、y 数据。 样条函数通过所有提供的点。 等效于
UnivariateSpline
,其中 s = 0。- 参数:
- x(N,) array_like
数据点的输入维度 - 必须严格递增
- y(N,) array_like
数据点的输入维度
- w(N,) array_like, 可选
用于样条拟合的权重。 必须为正数。 如果为 None(默认值),则所有权重均为 1。
- bbox(2,) array_like, 可选
指定近似区间边界的 2 序列。 如果为 None(默认值),则
bbox=[x[0], x[-1]]
。- kint, 可选
平滑样条的次数。 必须为
1 <= k <= 5
。 默认值为k = 3
,即三次样条。- extint 或 str, 可选
控制由结序列定义的区间之外的元素的外推模式。
如果 ext=0 或 ‘extrapolate’,则返回外推值。
如果 ext=1 或 ‘zeros’,则返回 0
如果 ext=2 或 ‘raise’,则引发 ValueError
如果 ext=3 或 ‘const’,则返回边界值。
默认值为 0。
- check_finitebool, 可选
是否检查输入数组是否仅包含有限数字。 禁用可能会提高性能,但如果输入确实包含无穷大或 NaN,则可能会导致问题(崩溃、不终止或无意义的结果)。 默认值为 False。
另请参阅
UnivariateSpline
用于拟合给定数据集的平滑单变量样条。
LSQUnivariateSpline
用户选择结的样条
SmoothBivariateSpline
通过给定点的平滑双变量样条
LSQBivariateSpline
使用加权最小二乘拟合的双变量样条
splrep
用于查找 1-D 曲线的 B 样条表示的函数
splev
用于评估 B 样条或其导数的函数
sproot
用于查找三次 B 样条的根的函数
splint
用于评估给定两点之间 B 样条的定积分的函数
spalde
用于评估 B 样条的所有导数的函数
注意
数据点的数量必须大于样条次数 k。
示例
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy.interpolate import InterpolatedUnivariateSpline >>> rng = np.random.default_rng() >>> x = np.linspace(-3, 3, 50) >>> y = np.exp(-x**2) + 0.1 * rng.standard_normal(50) >>> spl = InterpolatedUnivariateSpline(x, y) >>> plt.plot(x, y, 'ro', ms=5) >>> xs = np.linspace(-3, 3, 1000) >>> plt.plot(xs, spl(xs), 'g', lw=3, alpha=0.7) >>> plt.show()
请注意,
spl(x)
对 y 进行插值>>> spl.get_residual() 0.0
方法
__call__
(x[, nu, ext])在位置 x 处评估样条(或其 nu 阶导数)。
antiderivative
([n])构造一个新的样条,表示此样条的反导数。
derivative
([n])构造一个新的样条,表示此样条的导数。
derivatives
(x)返回点 x 处样条的所有导数。
返回样条系数。
返回样条内部结的位置。
返回样条近似的平方残差的加权和。
integral
(a, b)返回给定两点之间样条的定积分。
roots
()返回样条的零点。
使用给定的平滑因子 s 和上次调用时找到的结继续样条计算。
validate_input