有一些问题.
第一个问题是x值的顺序.从scipy.interpolate.UnivariateSpline的文档我们发现
x : (N,) array_like
1-D array of independent input data. MUST BE INCREASING.
压力增加了我.对于您给出的数据,x的顺序相反.
要调试它,使用“普通”样条曲线来确保一切都有意义是很有用的.
第二个问题,以及与您的问题更直接相关的问题,与s参数有关.它有什么作用?再次从我们找到的文档
s : float or None, optional
Positive smoothing factor used to choose the number of knots. Number
of knots will be increased until the smoothing condition is satisfied:
sum((w[i]*(y[i]-s(x[i])))**2,axis=0) <= s
If None (default), s=len(w) which should be a good value if 1/w[i] is
an estimate of the standard deviation of y[i]. If 0, spline will
interpolate through all data points.
因此,在最小二乘意义上,s确定插值曲线必须与数据点的接近程度.如果我们将值设置得非常大,那么样条曲线不需要靠近数据点.
作为一个完整的例子考虑以下内容
import scipy.interpolate as inter
import numpy as np
import pylab as plt