Python ValueError:解包的值过多 - polyval函数

0 投票
3 回答
1525 浏览
提问于 2025-04-17 23:55

我的代码是这样的(不过我把数字改了,因为原来的数字是指变量):

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这个方法返回的对象有超过两个值。

撰写回答