Python ValueError:解包的值过多 - polyval函数
我的代码是这样的(不过我把数字改了,因为原来的数字是指变量):
x = array([1,2,3,4,5])
y = array([1,2,3,4,5])
scatter(qnkt,Is)
p1 = polyfit(x, y, 1)
y,delta = polyval(p1,x)
graph1 = poly1d(p1)
ys = graph1(qnkt)
plot(x, ys)
我遇到了一个错误:
y,delta = polyval(p1,qnkt)
ValueError: too many values to unpack
有人能解释一下这是为什么吗?我想用polyval来计算误差(标准差)。
3 个回答
-1
>>> polyval(p1,x)
array([ 1., 2., 3., 4., 5.])
你可以看到,numpy.polyval 只返回一个数组,我认为这个数组就是 y,而没有 delta。如果你是把 Matlab 的代码移植过来,可能会期待有 delta 的返回。
0
你是从哪里得到 polyval
这个函数的?它并不是 Python 的标准库的一部分。你似乎给它传递了错误数量的参数。
而且你的代码和错误提示所指的那行代码也不一致。因为你没有解释代码中的任何变量,所以很难给出正确的建议。
2
在Python中,当你要把参数或其他集合里的内容拆开时,左边的名字数量必须和右边的项目数量一致。如果右边的数量不对,就会出现错误。
这里有个例子:
>>> a,b = (1,2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
如果左边的数量不对,你会遇到另一种错误:
>>> a,b = (1,)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
现在我们知道你那行代码出了什么问题。polyval
这个方法返回的对象有超过两个值。