scipy.interpolate.CubicSpline 给出的结果不明确
scipy.interpolate.CubicSpline is giving ambiguous result
我必须找到两组点之间的插值 X,Y
这样:
X = [2011, 2012, 2013, 2014, 2015, 2016, 2017]
Y = [0.947079910779078, 0.958840491330058, 0.948653507807658, .94687561871641, 0.94732364567882, 0.953963141055096, 0.943468711524127]
我尝试通过 CubicSpline
找到插值
F_spline = scipy.interpolate.CubicSpline(X, Y, extrapolate='periodic'))
但是如果我交叉检查,我得到,
In [98]: F_spline_val = [F_spline(year) for year in X]
Out[98]: [array(0.94707991),
array(0.95884049),
array(0.94865351),
array(0.94687562),
array(0.94732365),
array(0.95396314),
array(0.94707991)]
注意此处为 2017
计算的最后一个值是 0.94707991
,而在原始变量中,2017
的值是 0.943468711524127
。这显然是不准确的。我在这里错过了什么?为什么 2017
的值不明确?
您的问题是关键字 extrapolate = periodic
的使用。正如人们可能猜测的那样,这假设数据集中存在周期性 it has to fulfill the condition that y[0] == y[-1]
。
既然不清楚,为什么你的年份相关数据应该是周期性的,而你违反了假设,设置 extrapolate = True
并且你不会在数据集的边缘得到奇怪的结果。
我必须找到两组点之间的插值 X,Y
这样:
X = [2011, 2012, 2013, 2014, 2015, 2016, 2017]
Y = [0.947079910779078, 0.958840491330058, 0.948653507807658, .94687561871641, 0.94732364567882, 0.953963141055096, 0.943468711524127]
我尝试通过 CubicSpline
F_spline = scipy.interpolate.CubicSpline(X, Y, extrapolate='periodic'))
但是如果我交叉检查,我得到,
In [98]: F_spline_val = [F_spline(year) for year in X]
Out[98]: [array(0.94707991),
array(0.95884049),
array(0.94865351),
array(0.94687562),
array(0.94732365),
array(0.95396314),
array(0.94707991)]
注意此处为 2017
计算的最后一个值是 0.94707991
,而在原始变量中,2017
的值是 0.943468711524127
。这显然是不准确的。我在这里错过了什么?为什么 2017
的值不明确?
您的问题是关键字 extrapolate = periodic
的使用。正如人们可能猜测的那样,这假设数据集中存在周期性 it has to fulfill the condition that y[0] == y[-1]
。
既然不清楚,为什么你的年份相关数据应该是周期性的,而你违反了假设,设置 extrapolate = True
并且你不会在数据集的边缘得到奇怪的结果。