将嵌套的 numpy 数组转换为 2D 数组

时间:2021-06-14 09:58:03

标签: python-3.x numpy

我有一个形状为 (120,1) 的 numpy 数组。第二维是一串数字例如:

mat = array([['010000000000000'],
             ['000000000000000']])

所以这个矩阵 (mat) 的形状是 (2,1)。我想将其更改为形状 (2,15),其中 15 是数组中每个字符串的长度。所以原来的矩阵会变成(120,len(string)).

所需的输出:

desired = array([[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0],
                    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]])

我怎样才能做到这一点?将不胜感激。

2 个答案:

答案 0 :(得分:1)

将字符串转换为列表,它会给你一个字符列表,然后你可以像这样使用列表理解:

>>> mat = np.array([['010000000000000'],['000000000000000']])
>>> mat = np.array([[list(m2) for m2 in m1][0] for m1 in mat])

>>> mat.shape
(2, 15)

>>> mat
array([['0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
    '0', '0'],
   ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
    '0', '0']])

答案 1 :(得分:0)

只需使用列表推导式:

>>> mat = np.array([['010000000000000'],
                    ['000000000000000']])

>>> np.array([list(a[0]) for a in mat], dtype=int)

Out[1]: array([[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
               [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
相关问题