当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy interpolate.InterpolatedUnivariateSpline用法及代码示例


本文简要介绍 python 语言中 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对提供的x,y数据。样条函数通过所有提供的点。相当于scipy.interpolate.UnivariateSplines= 0。

参数

x (N,) 数组

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

y (N,) 数组

数据点的输入维度

w (N,) 数组, 可选

样条拟合的权重。必须是正的。如果无(默认),则权重均为 1。

bbox (2,) 类数组,可选

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

k 整数,可选

平滑样条的程度。必须是 1 <= k <= 5 。默认值为 k = 3 ,三次样条。

ext int 或 str,可选

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

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

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

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

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

默认值为 0。

check_finite 布尔型,可选

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

注意

数据点的数量必须大于样条度 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()
scipy-interpolate-InterpolatedUnivariateSpline-1_00_00.png

请注意,spl(x)插值y

>>> spl.get_residual()
0.0

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.interpolate.InterpolatedUnivariateSpline。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。