Как сгладить массив объектных массивов массивами различной формы? - PullRequest
0 голосов
/ 01 мая 2019

У меня есть массив 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). Как мне сделать это наиболее эффективным способом?

1 Ответ

1 голос
/ 01 мая 2019

Выровнять и соединить / сложить горизонтально -

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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...