假设我有一个像这样的数组
[[1,2 ,, [3,4,5]]
我想将其重塑为
[[[[1],[2]],[[3],[4],[5]]]
在Python中有一种简单的方法吗?我知道如果第二维在整个数据中都相同的话,这非常容易,但是在我的情况下,第二维的长度分别是2和3。
非常感谢。
答案 0 :(得分:0)
如果您有这样的列表:
nested = [[1,2], [3,4,5]]
您可以像这样将其拆分:
nested_split = [[[single_elt] for single_elt in inside_list] for inside_list in nested]
在调用print时将为您提供以下输出:
[[[1], [2]], [[3], [4], [5]]]
内部或外部列表的维数不会以任何方式影响此解决方案,因为使用for循环和列表理解将动态适应任何大小的列表。
答案 1 :(得分:0)
我们可以质疑这是列表列表还是多维数组,但是concateante
可以将其展平为一维数组的工作很不错:
In [173]: alist = [[1,2], [3,4,5]]
In [175]: np.concatenate(alist, axis=0)
Out[175]: array([1, 2, 3, 4, 5])
然后很容易将其整形为(5,1)形状数组:
In [176]: np.concatenate(alist, axis=0).reshape(-1,1)
Out[176]:
array([[1],
[2],
[3],
[4],
[5]])
有一些平整列表列表的习惯用法,但是由于您将其标记为一个numpy,因此numpy方法更为明显。
In [177]: import itertools
In [178]: list(itertools.chain(*alist))
Out[178]: [1, 2, 3, 4, 5]
In [180]: [[x] for x in itertools.chain(*alist)]
Out[180]: [[1], [2], [3], [4], [5]]
答案 2 :(得分:0)
您可以使用x for x in array
机制:
>>> a = [[1,2], [3,4,5]]
>>> [[[a2] for a2 in a1] for a1 in a]
[[[1], [2]], [[3], [4], [5]]]