1

我想将dataset行由不同列表组成的列表转换为newDataset列表,其中每一行由一个列表组成,该列表由列表的不同列表的每个元素组成dataset

dataset = [
[[2,3,1],[1,2,9],[1,3,8]],
[[1,4,1],[1,2,10],[9,3,1]],
[[1,4,0],[1,4,9],[2,5,8]],
]

newDataset = [
[2, 3, 1, 1, 2, 9, 1, 3, 8],
[1, 4, 1, 1, 2, 10, 9, 3, 1],
[1, 4, 0, 1, 4, 9, 2, 5, 8]
]

我想出了以下代码行:

from itertools import chain
newDataset = [list(chain(*x)) for x in dataset]

但是,我想有一个更蟒蛇的方式?

另一个相关问题:我如何生成newDataset2,其中每一行由行的不同列表的第一个元素组成?

newDataset2 = [
[2,1,1],
[1,1,9],
[1,1,2],
]
4

3 回答 3

3
itertools.chain(*x)

更好地表示为

itertools.chain.from_iterable(x)

但其他方面都很好。

还,

>>> [[x[0] for x in y] for y in dataset]
[[2, 1, 1], [1, 1, 9], [1, 1, 2]]
于 2012-06-20T11:07:20.837 回答
2
import numpy as np
np.array(dataset).reshape(3,9)

返回

array([[ 2,  3,  1,  1,  2,  9,  1,  3,  8],
       [ 1,  4,  1,  1,  2, 10,  9,  3,  1],
       [ 1,  4,  0,  1,  4,  9,  2,  5,  8]])

第二个:

np.array(dataset)[:,:,0]

返回

array([[2, 1, 1],
       [1, 1, 9],
       [1, 1, 2]])
于 2012-06-20T11:09:09.323 回答
1
dataset = [
[[2,3,1],[1,2,9],[1,3,8]],
[[1,4,1],[1,2,10],[9,3,1]],
[[1,4,0],[1,4,9],[2,5,8]],
]


print [[cell[0] for cell in row] for row in dataset]
于 2012-06-20T11:08:10.223 回答