Python 如何修复ValueError:要解包的值太多(预计4个)

Python 如何修复ValueError:要解包的值太多(预计4个),python,Python,我正在学习编写自然三次样条插值编码,但它给出了一个错误 这是我的密码: def NatBSpline(xd,yd): size=len(xd) h=np.diff(xd) delta_y=np.diff(yd) #coeff a a=yd #matrix A A=np.zeros(shape=(size,size)) q=np.zeros(shape=(size,1)) A[0,0]=1 A[-1,-1]=1 f

我正在学习编写自然三次样条插值编码,但它给出了一个错误 这是我的密码:

def NatBSpline(xd,yd):
        size=len(xd)
        h=np.diff(xd)
        delta_y=np.diff(yd)
        #coeff a
        a=yd

#matrix A
A=np.zeros(shape=(size,size))
q=np.zeros(shape=(size,1))
A[0,0]=1
A[-1,-1]=1

for i in range(1,size-1):
    A[i,i-1]=h[i-1]
    A[i,i+1]=h[i]
    A[i,i]=2*(h[i-1]+h[i])
    return A

#vector q
for i in range(1,size-1):
    q[i,0]=(3/h[i])*delta_y[i]-(3/h[i-1])*delta_y[i-1]
    return q

#solve for c in Ac=q
c=np.linalg.solve(A,q)

#solve for b and d
b=np.zeros(shape=(size-1,1))
d=np.zeros(shape=(size-1,1))
for i in range(0,len(d)):
    b[i]=(delta_y[i]/h[i])-h[i]*(c[i+1]+2*c[i])/3
    d[i]=(c[i+1]-c[i])/(3*h[i])
return b,d,c
这是我的数据

xd=np.array([0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0,9.2,\
    10.5,11.3,11.6,12.0,12.6,13.0,13.3])
yd=np.array([1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25,\
    1.95,1.4,0.9,0.7,0.6,0.5,0.4,0.25])
当我运行这一行时,它给出了ValueError:太多的值无法解包

a,b,c,d=NatBSpline(xd,yd)

您正在分配4个值a、b、c和d。Python告诉您NatBSplinexd,yd大于4个值,因此太多。这意味着函数不返回4个长度的可解包对象。请提供4个值,或更改左侧的变量数以匹配返回的值数。返回b,d,c-您可能会重新考虑这行是否正确。a,b,c,d=返回的b,d,c与参数的数量不匹配