當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy interpolate.LSQUnivariateSpline用法及代碼示例


本文簡要介紹 python 語言中 scipy.interpolate.LSQUnivariateSpline 的用法。

用法:

class  scipy.interpolate.LSQUnivariateSpline(x, y, t, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)#

具有顯式內部結的一維樣條。

將 k 次的樣條 y = spl(x) 擬合到提供的 x, y 數據。 t 指定樣條的內部結點

參數

x (N,) 數組

數據點的輸入維度 - 必須增加

y (N,) 數組

數據點的輸入維度

t (M,) 數組

樣條的內部結。必須按升序排列並且:

bbox[0] < t[0] < ... < t[-1] < bbox[-1]
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,則可能會導致問題(崩潰、非終止或無意義的結果)。默認為假。

拋出

ValueError

如果內部結不滿足 Schoenberg-Whitney 條件

注意

數據點的數量必須大於樣條度 k。

t必須滿足Schoenberg-Whitney條件,即必須有數據點的子集x[j]這樣t[j] < x[j] < t[j+k+1], 為了j=0, 1,...,n-k-2.

例子

>>> import numpy as np
>>> from scipy.interpolate import LSQUnivariateSpline, UnivariateSpline
>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()
>>> x = np.linspace(-3, 3, 50)
>>> y = np.exp(-x**2) + 0.1 * rng.standard_normal(50)

用預定義的內部結擬合平滑樣條:

>>> t = [-1, 0, 1]
>>> spl = LSQUnivariateSpline(x, y, t)
>>> xs = np.linspace(-3, 3, 1000)
>>> plt.plot(x, y, 'ro', ms=5)
>>> plt.plot(xs, spl(xs), 'g-', lw=3)
>>> plt.show()
scipy-interpolate-LSQUnivariateSpline-1_00_00.png

檢查節點向量:

>>> spl.get_knots()
array([-3., -1., 0., 1., 3.])

使用來自另一個樣條的結構造 lsq 樣條:

>>> x = np.arange(10)
>>> s = UnivariateSpline(x, x, s=0)
>>> s.get_knots()
array([ 0.,  2.,  3.,  4.,  5.,  6.,  7.,  9.])
>>> knt = s.get_knots()
>>> s1 = LSQUnivariateSpline(x, x, knt[1:-1])    # Chop 1st and last knot
>>> s1.get_knots()
array([ 0.,  2.,  3.,  4.,  5.,  6.,  7.,  9.])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.LSQUnivariateSpline。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。