0

次のコードを使用して、データの最小二乗 3 次スプライン フィットを見つけようとしています。

from scipy import interpolate
plt.subplot(223)
l_hits = np.array(l_hits)
list1 = np.log(l_hits)
knots = list1.sort()
xnew = np.arange(min(l_bins), max(l_bins))
tck = interpolate.splrep(l_bins,list1,s=0,k=3,task=-1,t=knots)
fnew = interpolate.splev(xnew, tck, der=0)
plt.plot(xnew, fnew, 'b-')

x 値はl_binsで、y 値はnp.log(l_hits) = list1です。しかし、私はエラーが発生し続けます:

TypeError: Knots must be given for task =-1

このエラーが発生する理由と修正方法を教えてください。

4

1 に答える 1

0

numpysortメソッドはインプレースで動作し、None を返すため、次の行:

knots = list1.sort()

なしに設定knotsします。

あなたが意図したと思うことを達成するには、次のようなことができます:

knots = list1.copy()
knots.sort()
于 2014-08-22T14:51:18.410 に答える