ValueError:x和y必须具有相同的第一尺寸,但形状为(101,)和(1,)

时间:2019-12-08 10:32:27

标签: python jupyter-notebook valueerror

enter image description here我是编码和使用JupyterNotebook的新手,我想问一问我将如何绘制x(在任何时间t)=(0,10,101)和y(作为加速度)=-2.2的图表。这些是我们教授给我们的值,但是当我尝试绘图时,它给了我一个错误,并说ValueError:x和y必须具有相同的第一维,但是形状为(101,)和(1,)。谢谢。

3 个答案:

答案 0 :(得分:2)

您的描述不清楚,我强烈建议您下次发布时提供您所遇到问题的代码示例。看看其他人如何提出他们的问题。无论如何,我会尽力帮助您。

我们知道:

x = 0.5at ^ 2 + V0t

位置:

x:位置 A:加速 V0:初始速度 t:时间

在现实生活中时间是连续的,但是不可能在编程中使用绝对绝对值连续变量,因此,接下来要做的最好的事情是使用步长非常小的范围。

让我们开始假设初始速度为零-> x = 0.5at * t

现在我们简化了方程式,让我们解决时间问题。

import numpy as np
import matplotlib.pyplot as plt


a = -2.2
time = np.arange(0,10,0.1)


x = [0.5*a*t*t for t in time]    


plt.plot(time,x)
plt.show()

出: plot of position vs time

如上所述,我们为时间值列表计算了x的每个值,如您所见,为了绘制位置与时间的值,列表的长度必须相同。我们可以使用“ len”检查列表的长度

print(f"length of time: {len(time)} ")
print(f"length of position: {len(x)}" )

退出:

length of time: 100 
length of position: 100

这里有一些资料可以帮助您开始学习python:

我在YouTube上推荐一些频道:

答案 1 :(得分:0)

要绘制x与y数据时,需要为x和y数据具有匹配的形状。 因此,为了绘制x的y = -2.2的水平线(从0到10而不是101点)

y = (-2.2)

您需要使用

y = np.full(101, -2.2)

更好

y = np.full(x.shape, -2.2)

这样y将具有与x形状匹配的101形状

答案 2 :(得分:0)

使用此:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,101)
y = np.repeat(-2.2,101) # map y constant value

plt.plot(x,y)
plt.show()

enter image description here