失去numpy数组的维度

3

我有一个numpy数组,其中包含多个列表,每个列表中又包含更多的子列表。我一直在尝试着找出使用numpy智能快速地压缩这些列表维度的方法,但是一直没有成功。

我的数据看起来像这样:

>>> np.shape(projected)
(13,)
>>> for i in range(len(projected)):
    print np.shape(projected[i])
(130, 3200)
(137, 3200)
.
.
(307, 3200)
(196, 3200)

我想得到的是一个包含所有子列表的列表,长度为130+137+..+307+196。我尝试使用np.reshape(),但出现错误:ValueError:total size of new array must be unchanged
np.reshape(projected,(total_number_of_lists, 3200))
>> ValueError: total size of new array must be unchanged

我一直在尝试使用np.vstack,但没有成功。非常感谢提供不包含for循环和.append()的帮助。

1个回答

2
似乎您只需在第一个轴上使用 np.concatenate,如下所示:
np.concatenate(projected,0)

样例运行 -

In [226]: # Small random input list
     ...: projected = [[[3,4,1],[5,3,0]],
     ...:              [[0,2,7],[8,2,8],[7,3,6],[1,9,0],[4,2,6]],
     ...:              [[0,2,7],[8,2,8],[7,3,6]]]

In [227]: # Print nested lists shapes
     ...: for i in range(len(projected)):
     ...:     print (np.shape(projected[i]))
     ...:     
(2, 3)
(5, 3)
(3, 3)

In [228]: np.concatenate(projected,0)
Out[228]: 
array([[3, 4, 1],
       [5, 3, 0],
       [0, 2, 7],
       [8, 2, 8],
       [7, 3, 6],
       [1, 9, 0],
       [4, 2, 6],
       [0, 2, 7],
       [8, 2, 8],
       [7, 3, 6]])

In [232]: np.concatenate(projected,0).shape
Out[232]: (10, 3)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接