【问题标题】:plot single row of 2d numpy array against 1d list针对 1d 列表绘制单行 2d numpy 数组
【发布时间】:2013-03-30 00:44:14
【问题描述】:

我想从二维 numpy 数组中绘制一行与 python 中的一维列表。例如,我想使用 matplotlib 行 'i' 绘制如下

  |0 0 0 0 0|
  |1 1 1 1 1|
i |2 2 2 2 2|
  |. . . . .|
  |n n n n n|

反对

[0, 100, 200, 300, 400]

我目前拥有的是:

plt.plot(list1, 2dimArray[i])

但这不起作用。当我针对 1d 列表绘制 1d 列表时,我可以使用此功能,但我必须使用多维并选择 numpy。

有没有办法做到这一点?

【问题讨论】:

  • 如果A 是您的二维数组,x 是您的一维列表,plt.plot(x, A[i,:]) 是否有效?

标签: python arrays numpy matplotlib


【解决方案1】:

使用您在下面评论中的数据,这对我有用:

In [1]: import numpy as np

In [2]: x = np.arange(0,1100,100)

In [3]: y = np.random.rand(6,11)

In [4]: i = 2

In [5]: plt.plot(x, y[i])
Out[5]: [<matplotlib.lines.Line2D at 0x1043cc790>]

问题是plotxy 参数必须具有相同的形状(或至少相同的第一个形状条目)。

In [6]: x.shape
Out[6]: (11,)

In [7]: y.shape
Out[7]: (6, 11)

In [8]: y[i].shape
Out[8]: (11,)

也许您的程序生成的其中一个项目实际上不具有您认为的形状?

如果您将列表与 numpy 数组一起使用,这也应该有效(plt.plot 可能会将列表转换为数组):

In [9]: xl = range(0, 1100, 100)

In [10]: plt.plot(xl, y[i])
Out[10]: [<matplotlib.lines.Line2D at 0x10462aed0>]

【讨论】:

  • 这是我得到的错误:ValueError: x and y must have same first dimension
  • 你能告诉我们b.shapea.share是什么吗?
  • x: 一维列表构造为 [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] y: 二维数组构造为 np.zeros( ( 6,11))
  • @user1535701 我仍然可以使用您提供的数据让它工作。请参阅我的编辑。你确定形状匹配吗?
  • 这可能与我的 y 变量是 array 而我的 x 变量是 list 的事实有关吗?还是两者在情节方面相互配合?
猜你喜欢
  • 2021-08-21
  • 2021-02-25
  • 1970-01-01
  • 2021-01-28
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
相关资源
最近更新 更多