本文簡要介紹 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()
檢查節點向量:
>>> 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.])
相關用法
- Python SciPy interpolate.LSQSphereBivariateSpline用法及代碼示例
- Python SciPy interpolate.LinearNDInterpolator用法及代碼示例
- Python SciPy interpolate.make_interp_spline用法及代碼示例
- Python SciPy interpolate.krogh_interpolate用法及代碼示例
- Python SciPy interpolate.InterpolatedUnivariateSpline用法及代碼示例
- Python SciPy interpolate.BSpline用法及代碼示例
- Python SciPy interpolate.griddata用法及代碼示例
- Python SciPy interpolate.splder用法及代碼示例
- Python SciPy interpolate.PPoly用法及代碼示例
- Python SciPy interpolate.NdBSpline用法及代碼示例
- Python SciPy interpolate.pade用法及代碼示例
- Python SciPy interpolate.barycentric_interpolate用法及代碼示例
- Python SciPy interpolate.RegularGridInterpolator用法及代碼示例
- Python SciPy interpolate.NdPPoly用法及代碼示例
- Python SciPy interpolate.interp2d用法及代碼示例
- Python SciPy interpolate.approximate_taylor_polynomial用法及代碼示例
- Python SciPy interpolate.RectSphereBivariateSpline用法及代碼示例
- Python SciPy interpolate.sproot用法及代碼示例
- Python SciPy interpolate.splantider用法及代碼示例
- Python SciPy interpolate.CloughTocher2DInterpolator用法及代碼示例
- Python SciPy interpolate.interp1d用法及代碼示例
- Python SciPy interpolate.BPoly用法及代碼示例
- Python SciPy interpolate.BarycentricInterpolator用法及代碼示例
- Python SciPy interpolate.splrep用法及代碼示例
- Python SciPy interpolate.make_smoothing_spline用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.LSQUnivariateSpline。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。