interpolate.splrep错误:'必须为task = -1'

时间:2014-08-22 14:36:23

标签: python scipy least-squares interpolation cubic-spline

我正在尝试使用以下代码找到最小平方三次样条拟合数据:

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

为什么我会收到此错误,如何解决?

1 个答案:

答案 0 :(得分:0)

numpy sort方法就地运行,并返回None,所以这一行:

knots = list1.sort()

knots设置为无。

为了实现我的想法,你可以做到这样的事情:

knots = list1.copy()
knots.sort()