在Python中将2D列表转换为3D列表

时间:2018-09-05 08:50:35

标签: python

我在Python中具有维度(2,7)的列表列表(2D List),我想将其转换为维度(2,7,1)的列表列表列表(3D List)。

输入:

[[0, 0, 1, 0, 1, 0, 0],
 [1, 0, 1, 0, 0, 0, 0]]

输出:

[[[0],
  [0],
  [1],
  [0],
  [1],
  [0],
  [0]
 ]
 [[1],
  [0],
  [1],
  [0],
  [0],
  [0],
  [0]]]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用double for循环(或列表理解)来完成此操作,但是对于这种情况,最好使用numpy

 import numpy as np
 x2D = np.array([[0, 0, 1, 0, 1, 0, 0], [1, 0, 1, 0, 0, 0, 0]])
 x3D = x2D[:, :, None]

答案 1 :(得分:2)

如果您有列表

a = [[0, 0, 1, 0, 1, 0, 0], [1, 0, 1, 0, 0, 0, 0]]

然后写作 [[i] for i in a]

会给你

[[[0, 0, 1, 0, 1, 0, 0]], [[1, 0, 1, 0, 0, 0, 0]]]

几乎是您想要的,除了每个元素本身都必须是一个列表。因此我们可以将其修改为(感谢Tryph!)

[map(lambda x: [x], item) for item in a]

这会给你

[[[0], [0], [1], [0], [1], [0], [0]], [[1], [0], [1], [0], [0], [0], [0]]]