首页 > 解决方案 > 将 2D 元组重塑为 1D

问题描述

我有一个元组(32 x 120):

示例 (4x120)


[ [1, 2, 3, 4, .... , 118, 119, 120],
  [2, 3, 4, 5, .... , 119, 120, 121],
  [3, 4, 5, 6, .... , 120, 121, 122], 
  [4, 5, 6, 7, .... , 121, 122, 123] ] 

我想要一个这样的向量:

[1,2,3,4, 2,3,4,5, 3,4,5,6, 4,5,6,7, ..... 118,119,120,121, 119,120,121,122, 120,121,122,123]

任何想法?

标签: python2d

解决方案


一种快速简便的方法是在 Numpy 中执行此操作,因为您可以简单地将数组转置T,然后flatten()将其转换为一维数组。

import numpy as np
x = np.array([ [1, 2, 3, 4  118, 119, 120],
             [2, 3, 4, 5, 119, 120, 121],
             [3, 4, 5, 6, 120, 121, 122], 
             [4, 5, 6, 7, 121, 122, 123] ] )

print(x.T.flatten())

array([  1,   2,   3,   4,   2,   3,   4,   5,   3,   4,   5,   6,   4,
         5,   6,   7, 118, 119, 120, 121, 119, 120, 121, 122, 120, 121,
       122, 123])

如果你想要它作为一个列表而不是一个数组,它会是x.T.flatten().tolist()

对于非 Numpy 解决方案,您可以使用以下方法:

[inner for outer in zip(*x) for inner in outer]

它返回与上面相同的输出。


推荐阅读