在python中执行二次样条的最佳方法是什么?我使用interp1d
,但这种方法不是我假装做的。
这是python代码的例子:
from scipy.interpolate import interp1d
x = [5,6,7,8,9,10,11]
y = [2,9,6,3,4,20,6]
xx = [1,2,3,4,5,6,7,8,9,10,11,12]
f = interp1d(x, y, kind='quadratic')
yy = f(xx)
每次运行此代码时都会出现此错误:
ValueError:x_new中的值低于插值范围。
答案 0 :(得分:0)
当您尝试从插值范围中获取一个点时,会发生该错误。例如,如果您只有5到11之间的数据,则只能在此范围内进行插值(否则我们将讨论外推)。然而,函数“scipy.interpolate.CubicSpline”会进行插值和外推,因此您可以获得超出范围的结果。
答案 1 :(得分:0)
尝试添加参数fill_value:
f= interp1d(x, y, kind='quadratic', fill_value='extrapolate')
xx的值:1、2、34和12超出了您提供的初始数据,因此必须构建样条线才能处理此问题。