【问题标题】:Convert a list into 2-D array in python在python中将列表转换为二维数组
【发布时间】:2014-10-13 06:22:41
【问题描述】:

我正在尝试创建一个绘图,并且这些点用颜色条着色。

matplotlib.pyplot.scatter(x,y, c=time_color)

我有一个 time_color 列表,例如

time_color = [0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2]

不幸的是,plot 命令不接受指定颜色的列表。所以我把它转换成一个数组

numpy.array(time_color)

这给了我一个一维数组。

numpy.ndim(numpy.array(time_color))

如何将列表转换为二维数组以生成 3-D 图(第三维是颜色)?

谢谢。

【问题讨论】:

    标签: python arrays list matplotlib colorbar


    【解决方案1】:

    您可以使用numpy.reshape 更改numpy 数组的维度。例如,您可以执行以下操作:

    >>> import numpy
    >>> time_color = [0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2]
    >>> numpy.array(time_color)
    array([0, 4, 3, 3, 2, 3, 5, 4, 0, 3, 3, 2, 1, 2, 3, 4, 5, 1, 4, 3, 2])
    >>> numpy.reshape(time_color, (3, 7))
    array([[0, 4, 3, 3, 2, 3, 5],
           [4, 0, 3, 3, 2, 1, 2],
           [3, 4, 5, 1, 4, 3, 2]])
    

    或者如果您的 time_color 数组具有 len(x) 元素,您可以重塑您的 time_color 列表如下(其中len(x)=n*m):

    >>> numpy.reshape(time_color, (m, n))
    

    【讨论】:

      【解决方案2】:

      实际上,matplotlib 的散点图确实接受颜色条的列表。 例如,以下是完全合法的,并创建一个颜色为第三维的 2D 图:

      matplotlib.pyplot.scatter( range(0,10), range(0,10), c=range(0,10) )
      

      如果您想要颜色为第四维的 3D 绘图,您可以使用相同的想法:

      from mpl_toolkits.mplot3d import Axes3D
      import matplotlib.pyplot as plt
      
      fig = plt.figure()
      ax = Axes3D(fig) #Or: ax = fig.add_subplot(111, projection='3d')
      
      ax.scatter( range(0,10), range(0,10), c=range(0,10) )
      

      【讨论】:

      • 那么我的回答是否最好地解决了您的问题?如果您能为我的答案投票,我将不胜感激。
      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 2016-09-24
      • 2022-01-15
      • 2023-03-10
      • 2011-12-04
      • 2011-09-30
      • 1970-01-01
      • 2016-01-18
      相关资源
      最近更新 更多