python - ValueError : too many values to unpack (expected 1)?

标签 python numpy matplotlib error-handling

我不断收到“ValueError:太多值无法解包(预期1)”

它说错误发生在p2, = plt.plot(t, p, 'g--', label='Approx'),但是我看不到该行有问题。我如何解决它?

def g(x):
    return x * np.sin(1/x)

x = np.linspace(-1, 1, 30)
y = g(x)
t = np.linspace(np.min(x), np.max(x), 100)
p = np.array([g(x) for i in range(len(t))])
xx = np.linspace(np.min(x), np.max(x), 100)
yy = g(xx)
plt.figure(1)
p1, = plt.plot(x, y, 'ro', label='Data points')
p2, = plt.plot(t, p, 'g--', label='Approx')
p3, = plt.plot(xx, yy, 'blue', label='Real')
plt.legend(handles=[p1, p2, p3], loc='best')
plt.xlabel('t')
plt.ylabel('g(x)')
plt.grid(True)
plt.show()

最佳答案

我看到两个问题,您看到的错误是由于您的p变量位于单个元素列表中,因此您可以解压缩它。

第二个问题是tp的长度不同,我不确定在不知道目标的情况下如何解决该问题。

import numpy as np
import matplotlib.pyplot as plt

def g(x):
    return x * np.sin(1/x)

x = np.linspace(-1, 1, 30)
y = g(x)
t = np.linspace(np.min(x), np.max(x), 100)
p = np.array([g(x) for i in range(len(t))])[0]
xx = np.linspace(np.min(x), np.max(x), 100)
yy = g(xx)
plt.figure(1)

print('t')
print(t)
print('p')
print(p)

p1, = plt.plot(x, y, 'ro', label='Data points')
p2, = plt.plot(t, p, 'g--', label='Approx')
p3, = plt.plot(xx, yy, 'blue', label='Real')
plt.legend(handles=[p1, p2, p3], loc='best')
plt.xlabel('t')
plt.ylabel('g(x)')
plt.grid(True)
plt.show()

关于python - ValueError : too many values to unpack (expected 1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599960/

相关文章:

python - H5PY键读取速度慢

python - 将直方图箱分配给每个数据点

python - 使用嵌套 for 循环附加到多个列表

python - OpenCV 将图像读取为 3 channel 图像,而 PIL 将图像读取为 1 channel 图像

python - Windows - Cygwin - Vim - Python - 导入错误

python - sklearn 管道 - 在管道中应用多项式特征变换后应用样本权重

python - 用 Mechanize 打开网页后,如何继续提交

python - 我可以在不使用图像库的情况下重新缩放图像吗?

python - Pandas 用 yerr 绘图给出关键错误 :0

python - iPython 笔记本,静态交互;我错过了什么?