我有一个数组a
>> a = np.array([np.ones((4,5)), np.arange(6), np.arange(20).reshape((2,2,5))])
>> a
array([array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]]),
array([0, 1, 2, 3, 4, 5]),
array([[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9]],
[[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]]])], dtype=object)
,我想将其展平以得到类似array(1, 1, 1, ... 17, 18, 19)
的内容。如何以最有效的方式做到这一点?
答案 0 :(得分:1)
平整并水平连接/堆叠-
In [36]: np.concatenate([np.ravel(i) for i in a])
Out[36]:
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 0., 1., 2., 3., 4., 5.,
0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19.])
In [42]: np.hstack([np.ravel(i) for i in a])
Out[42]:
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 0., 1., 2., 3., 4., 5.,
0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19.])
或与map
-
np.concatenate(list(map(np.ravel,a)))
np.hstack(list(map(np.ravel,a)))