带有 pyplot.plot 的简单数组列表

莎拉·蒙

我在理解如何pyplot.plot工作时遇到了一些麻烦
我举一个简单的例子:我想绘制pyplot.plot(lst2, lst2)lst2 是列表的位置。
困难在于 lst2 的每个元素都是一个形状为 (1,1) 的数组。如果元素是浮动的而不是数组,就不会有问题。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

V2 = np.array([[1]])
W2 = np.array([[2]])

print('The shape of V2 is', V2.shape)
print('The shape of W2 is', W2.shape)

lst2 = [V2, W2]
plt.plot(lst2, lst2)
plt.show

以下是我收到的错误消息的结尾:

~\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _xy_from_xy(self,x, y)
    245         if x.ndim > 2 or y.ndim > 2:
    246             raise ValueError("x and y can be no greater than 2-D, but have "
--> 247                              "shapes {} and {}".format(x.shape, y.shape))
    248 
    249         if x.ndim == 1:

ValueError: x and y can be no greater than 2-D, but have shapes (2, 1, 1) and (2, 1, 1)

在错误消息中让我感到惊讶的是提到了一个维度 (2,1,1) 的数组。这似乎是数组np.array([V2,W2])时,我们称之为建成pyplot.plot

我的问题是,当我们使用 x 和 y 列表调用 pyplot.plot(x,y) 时,幕后会发生什么?似乎构建了一个包含 x 元素的数组(对于 y 也是如此)。并且这些阵列必须有最多 2 个轴。我对么?

我知道如果我在 V2 和 W2 上使用 numpy.squeeze,它会起作用。但是我想了解pyplot.plot在我给出的示例中发生了什么

安德拉斯·迪克

仔细看看你在做什么:

V2 = np.array([[1]])
W2 = np.array([[2]])
lst2 = [V2, W2]
plt.plot(lst2, lst2)

出于某种奇怪的原因,您(1,1)通过使用一对嵌套的括号将数组定义为形状构造时lst2,您沿新的前导维度堆叠数组这与 pyplot 无关,这是 numpy。

Numpy 数组是矩形的,它们与列表的列表兼容 ... of 列表。嵌套的级别决定了数组的维数。看一个简单的二维示例:

>>> M = np.arange(2*3).reshape(2,3)
>>> print(repr(M))
array([[0, 1, 2],
       [3, 4, 5]])

出于所有意图和目的,您可以将此 2x3 矩阵视为两个行向量。M[0]是一样的M[0,:],并在第一行,M[1]是相同的M[1,:]是在第二排。然后,您还可以通过以下方式从两行构造此数组:

row1 = [0, 1, 2]
row2 = [3, 4, 5]
lst = [row1, row2]
np.array(lst)

我的观点是我们采用了两个长度为 3 的平面列表(它们与 shape 的一维 numpy 数组兼容(3,)),并将它们连接到一个列表中。结果与 shape 的二维数组兼容(2,3)“2”是由于我们将 2 个列表放入 中lst,而“3”是由于两个列表的长度均为 3。

因此,当您lst2在上面创建时,您正在做一些与此等效的事情:

lst2 = [ [[1]], [[2]] ]

您将两个嵌套的子列表放入一个与数组兼容的列表中,并且两个子列表都与 shape 兼容(1,1)这意味着你最终会得到一个 3d 数组(根据你在嵌套的最深层次有三个左括号的事实),形状为(2,1,1)同样,2 来自内部有两个数组的事实,尾随维度来自内容。


真正的问题是你想要做什么。一方面,您的数据不应该真正具有形状 (1,1)。在最直接的应用程序中,pyplot.plot您有 1d 数据集:一个用于 x ,另一个用于绘图的 y 坐标。为此,您可以对 x 和 y 使用简单(平面)列表或一维数组。重要的是它们的长度相同。

然后,当您将两者相互绘制时,首先传递 x 坐标,然后传递 y 坐标。你大概的意思是这样的

plt.plot(V2,W2)

在这种情况下,您将传递 2d 数组进行绘图,并且您不会看到传递类似 3d 数组的错误。但是,pyplot.plot对于 2d 输入(两个数据集的列将相互绘制), 的行为并不重要,并且您必须确保您确实希望将 2d 数组作为输入传递。但是您几乎从不想将与前两个参数相同的对象传递给pyplot.plot.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有Pyplot的平滑表面图

来自分类Dev

将3个数组传递给python中的matplotlib.pyplot.plot函数

来自分类Dev

为带有简单数组的ng-options放置一个模型索引

来自分类Dev

从`matplotlib.pyplot.plot`获取点坐标

来自分类Dev

PHP:动态创建没有索引的简单数组

来自分类Dev

创建具有类别树结构的简单数组

来自分类Dev

如何遍历简单数组中的所有可能组合

来自分类Dev

带有 Pyplot 的斜率场指向错误的方向

来自分类Dev

参数s中带有matplotlib.pyplot.scatter的matplotlib.pyplot问题

来自分类Dev

使用matplotlib.pyplot.plot的Qt会话管理错误

来自分类Dev

修改Pandas DataFrame crosstab()的matplot.pyplot.plot()的线条样式

来自分类Dev

PyPlot“ plot()”函数在Ubuntu 16.04上的julia 0.4.5中失败

来自分类Dev

Osmnx:如何使 plot_shape() 在 pyplot 子图中起作用?

来自分类Dev

使 `matplotlib.pyplot.plot()` 与 `PeriodIndex` 一起工作

来自分类Dev

Pyplot:绘制[[[(元组列表)的列表]]

来自分类Dev

将pandas.datframe.plot()与matplotlib.pyplot.plot()结合的最佳方法是什么?

来自分类Dev

带有数组/列表值的枚举

来自分类Dev

带有列表/数组的熊猫fillna

来自分类Dev

带有NullPointerException的列表

来自分类Dev

Python:带有[<>,<> ...]的列表

来自分类Dev

带有列表的 INotifyPropertyChanged

来自分类Dev

如何在余烬中序列化简单数组有效载荷?

来自分类Dev

使用matplotlib的pyplot在每个单元格中带有文本的热图

来自分类Dev

使用pyplot在Python中绘制带有嵌入式if语句的lambda

来自分类Dev

Pyplot/Matplotlib:在 x 轴上带有字符串的二进制数据

来自分类Dev

带有浮点数和错误结果的C ++简单数学运算?

来自分类Dev

带有Elasticsearch的字段的唯一值的简单列表

来自分类Dev

带有简单if语句的密码

来自分类Dev

带有 if 语句的简单查询

Related 相关文章

  1. 1

    带有Pyplot的平滑表面图

  2. 2

    将3个数组传递给python中的matplotlib.pyplot.plot函数

  3. 3

    为带有简单数组的ng-options放置一个模型索引

  4. 4

    从`matplotlib.pyplot.plot`获取点坐标

  5. 5

    PHP:动态创建没有索引的简单数组

  6. 6

    创建具有类别树结构的简单数组

  7. 7

    如何遍历简单数组中的所有可能组合

  8. 8

    带有 Pyplot 的斜率场指向错误的方向

  9. 9

    参数s中带有matplotlib.pyplot.scatter的matplotlib.pyplot问题

  10. 10

    使用matplotlib.pyplot.plot的Qt会话管理错误

  11. 11

    修改Pandas DataFrame crosstab()的matplot.pyplot.plot()的线条样式

  12. 12

    PyPlot“ plot()”函数在Ubuntu 16.04上的julia 0.4.5中失败

  13. 13

    Osmnx:如何使 plot_shape() 在 pyplot 子图中起作用?

  14. 14

    使 `matplotlib.pyplot.plot()` 与 `PeriodIndex` 一起工作

  15. 15

    Pyplot:绘制[[[(元组列表)的列表]]

  16. 16

    将pandas.datframe.plot()与matplotlib.pyplot.plot()结合的最佳方法是什么?

  17. 17

    带有数组/列表值的枚举

  18. 18

    带有列表/数组的熊猫fillna

  19. 19

    带有NullPointerException的列表

  20. 20

    Python:带有[<>,<> ...]的列表

  21. 21

    带有列表的 INotifyPropertyChanged

  22. 22

    如何在余烬中序列化简单数组有效载荷?

  23. 23

    使用matplotlib的pyplot在每个单元格中带有文本的热图

  24. 24

    使用pyplot在Python中绘制带有嵌入式if语句的lambda

  25. 25

    Pyplot/Matplotlib:在 x 轴上带有字符串的二进制数据

  26. 26

    带有浮点数和错误结果的C ++简单数学运算?

  27. 27

    带有Elasticsearch的字段的唯一值的简单列表

  28. 28

    带有简单if语句的密码

  29. 29

    带有 if 语句的简单查询

热门标签

归档