0

scipy.interpolate.interp1d 関数で動作する 3 次スプラインを取得しようとしています。ドキュメントページの例を機能させようとしましたが、実行するたびに次のエラーが発生します。

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 結果 = 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、spleval res[ sl] = _fitpack._bspleval(xx,xj,cvals[sl],k,deriv) IndexError: インデックスが多すぎます

したがって、線形補間では機能しますが、3 次補間では機能しません。私はおそらくばかげたエラーを犯していますが、何が問題なのかわかりません。私が使用している例のコードは次のとおりです。

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() 
4

1 に答える 1