在python中将列表转换为二维数组

时间:2014-08-20 01:35:46

标签: python arrays list matplotlib colorbar

我正在尝试创建一个情节,并用彩色条阴影显示点。

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))

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

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用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)< / p>

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

答案 1 :(得分:2)

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

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

enter image description here

如果你想要一个颜色为第四维的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) )

enter image description here