我在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]]]
我该怎么做?
答案 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]]]
。