scipy.interpolate.interp1d索引错误

时间:2013-09-06 04:50:13

标签: python numpy scipy

我正在尝试使用scipy.interpolate.interp1d函数创建一个三次样条曲线。我尝试在documentation page上运行示例,但每当我运行它时,我都会收到此错误:

  

plt.plot(x,y,'o',xnew,f(xnew),' - ',xnew,f2(xnew),' - ')文件   “/Library/Python/2.7/site-packages/scipy-0.12.0.dev_ddd617d_20120920-py2.7-macosx-10.8-x86_64.egg/scipy/interpolate/interpolate.py”   第396行,致电       y_new = self._call(x_new)文件“/Library/Python/2.7/site-packages/scipy-0.12.0.dev_ddd617d_20120920-py2.7-macosx-10.8-x86_64.egg/scipy/interpolate/interpolate.py”,   第372行,在_call_spline中       result = spleval(self._spline,x_new.ravel())文件“/Library/Python/2.7/site-packages/scipy-0.12.0.dev_ddd617d_20120920-py2.7-macosx-10.8-x86_64.egg/scipy/interpolate /interpolate.py”   第835行,在脾脏       res [sl] = _fitpack._bspleval(xx,xj,cvals [sl],k,deriv)IndexError:索引太多

因此,它适用于线性插值,但不适用于立方体。我可能犯了一些愚蠢的错误,但我无法弄清楚出了什么问题。以下是我正在使用的示例的代码:

import numpy as np
from scipy.interpolate import interp1d

x = np.linspace(0, 10, 40)
y = np.cos(-x**2/8.0)
f = interp1d(x, y)
f2 = interp1d(x, y, kind='cubic')

xnew = np.linspace(0, 10, 10)
import matplotlib.pyplot as plt
plt.plot(x,y,'o',xnew,f(xnew),'-', xnew, f2(xnew),'--')
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show() 

1 个答案:

答案 0 :(得分:0)

Elyase是对的。我在我的计算机上切换到了Enthought python发行版 - 在脚本的顶部加入了“#!/ usr / bin / env python”,这使它运行起来。我正在使用的scipy版本一定是个问题。感谢您的快速建议!