InterpolatedUnivariateSpline#
- class scipy.interpolate.InterpolatedUnivariateSpline(x, y, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)[源代码][源代码]#
1-D 插值样条曲线用于给定的一组数据点。
拟合一个度数为 k 的样条曲线 y = spl(x) 到提供的 x, y 数据。样条函数通过所有提供的点。等同于 s = 0 的
UnivariateSpline。- 参数:
- x(N,) 数组类
数据点的输入维度 – 必须严格递增
- y(N,) 数组类
数据点的输入维度
- w(N,) 数组类,可选
样条拟合的权重。必须是正数。如果为 None(默认),则所有权重均为 1。
- bbox(2,) 数组类,可选
2-序列指定近似区间的边界。如果为 None(默认),
bbox=[x[0], x[-1]]。- kint, 可选
平滑样条的阶数。必须为
1 <= k <= 5。默认值为k = 3,即三次样条。- 扩展int 或 str, 可选
控制不在由节点序列定义的区间内的元素的外推模式。
如果 ext=0 或 ‘extrapolate’,返回外推值。
如果 ext=1 或 ‘zeros’,返回 0
如果 ext=2 或 ‘raise’,则引发 ValueError
如果 ‘const’ 的 ext=3,返回边界值。
默认值为 0。
- check_finitebool, 可选
是否检查输入数组是否仅包含有限数字。禁用可能会提高性能,但如果输入包含无穷大或NaN,则可能会导致问题(崩溃、非终止或无意义的结果)。默认值为False。
方法
__call__(x[, nu, ext])在位置 x 处评估样条(或其 nu 阶导数)。
antiderivative([n])构建一个新的样条曲线,表示此样条曲线的反导数。
derivative([n])构造一个新的样条曲线,表示此样条曲线的导数。
derivatives(x)返回在点 x 处样条的所有导数。
返回样条系数。
返回样条曲线的内部节点位置。
返回样条近似中残差的加权平方和。
integral(a, b)返回给定两点之间样条的定积分。
roots()返回样条的零点。
使用给定的平滑因子 s 和在上次调用中找到的节点继续样条计算。
validate_input
参见
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