我不断收到“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
变量位于单个元素列表中,因此您可以解压缩它。
第二个问题是t
和p
的长度不同,我不确定在不知道目标的情况下如何解决该问题。
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/