Python SciPy的UnivariateSpline在范围内返回NaN值

3

我正在尝试使用SciPy的UnivariateSpline来定位曲线上的一个点。不幸的是,我的结果是nan
这是一个简单的示例:

from scipy.interpolate import UnivariateSpline  

spline = UnivariateSpline([0.6, 0.4, 0.2, 0.0], [-0.3, -0.1, 0.1, 0.3], w=None, bbox=[None, None], k=1, s=0)  
POINT = spline([0.15])  
print POINT  

结果为[ NaN]
我错过了UnivariateSpline的哪个特性?
我正在使用Python 2.6.6和scipy版本0.7.2。
我不能保证我的数据点始终是递增的,所以interp可能不是一个替代方案。
1个回答

8

根据UnivariateSpline的文档字符串所述,x中的值必须递增。如果要使用UnivariateSpline,您需要对数据进行排序。例如:

In [71]: x = np.array([0.6, 0.4, 0.2, 0.0])

In [72]: y = np.array([-0.3, -0.1, 0.1, 0.3])

In [73]: order = np.argsort(x)

In [74]: spline = UnivariateSpline(x[order], y[order], w=None, bbox=[None, None], k=1, s=0)

In [75]: spline([0.15])
Out[75]: array([ 0.15])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接