scipy.interpolate.InterpolatedUnivariateSpline

class scipy.interpolate.InterpolatedUnivariateSpline(x, y, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)[源代码]

给定数据点集合的一维插值样条。

拟合次数为y=spl(X)的样条曲线 k 至提供的 xy 数据。样条函数通过所有提供的点。相当于 UnivariateSpline 其中s=0。

参数
x(n,)类似数组

数据点的输入维度--必须严格增加

y(n,)类似数组

数据点的输入维度

w(n,)array_like,可选

样条曲线拟合的权重。一定是阳性的。如果为None(默认),则权重都相等。

bbox(2,)array_like,可选

2-指定近似间隔边界的序列。如果无(默认值), bbox=[x[0], x[-1]]

k整型,可选

平滑样条曲线的阶数。必须是1<= k <=5。

extint或str,可选

控制不在节点序列定义的间隔内的元素的外推模式。

  • 如果ext=0或‘Extrapolate’,则返回外推值。

  • 如果ext=1或‘零’,则返回0

  • 如果ext=2或‘RAISE’,则引发ValueError

  • 如果ext=3 of‘const’,则返回边界值。

默认值为0。

check_finite布尔值,可选

是否检查输入数组是否仅包含有限数字。禁用可能会提高性能,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止或无意义的结果)。默认值为False。

参见

UnivariateSpline

一种光滑的单变量样条,用于拟合给定的数据点集合。

LSQUnivariateSpline

用户为其选择结的样条曲线

SmoothBivariateSpline

一种通过给定点的光顺二元样条

LSQBivariateSpline

基于加权最小二乘拟合的二元样条

splrep

求一维曲线B样条表示的函数

splev

求B样条或其导数的函数

sproot

三次B样条的求根函数

splint

求两点间B样条定积分的一个函数

spalde

求B样条所有导数的一个函数

注意事项

数据点的数量必须大于样条阶数 k

示例

>>> 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()
../../_images/scipy-interpolate-InterpolatedUnivariateSpline-1_00_00.png

请注意, spl(x) 插补 y

>>> spl.get_residual()
0.0

方法:

__call__ \(X[, nu, ext] )

计算位置x处的样条线(或其第n阶导数)。

antiderivative \([n] )

构造一个表示该样条的逆导数的新样条。

derivative \([n] )

构造一个表示该样条的导数的新样条。

derivatives \(X)

返回点x处样条的所有导数。

get_coeffs \()

返回样条系数。

get_knots \()

返回样条线内部节点的位置。

get_residual \()

返回样条近似残差平方的加权和。

integral \(a,b)

返回两个给定点之间样条的定积分。

roots \()

返回样条曲线的零。

set_smoothing_factor \(s)

使用给定的平滑因子s和上次调用时找到的节点继续样条曲线计算。

validate_input