Преобразование массива numpy в желаемую форму - PullRequest
0 голосов
/ 11 марта 2020

Я работаю в numpy и у меня есть массив numpy в форме;

[[ 1,  2,  3],
 [ 4,  5,  6],
 [ 7,  8,  9],
 [10, 11, 12],
 [13, 14, 15],
 [16, 17, 18],
 [19, 20, 21],
 [22, 23, 24]]

Я хочу использовать только функции изменения формы и транспонирования и получить следующий массив:

[[ 1,  2,  3,  7,  8,  9, 13, 14, 15, 19, 20, 21],
 [ 4,  5,  6, 10, 11, 12, 16, 17, 18, 22, 23, 24]]

Можно ли это сделать? Я часами пытался и начинаю думать, что это просто невозможно - я упускаю что-то очевидное?

Ответы [ 2 ]

4 голосов
/ 11 марта 2020

Вы можете изменить форму в столбцы, затем транспонировать, а затем изменить что-то вроде:

a = np.array([[ 1,2,3],
 [ 4,5,6],
 [ 7,8,9],
 [10, 11, 12],
 [13, 14, 15],
 [16, 17, 18],
 [19, 20, 21],
 [22, 23, 24]])

a.reshape(-1, 2, 3).transpose((1, 0, 2)).reshape(2, -1)

# array([[ 1,  2,  3,  7,  8,  9, 13, 14, 15, 19, 20, 21],
#        [ 4,  5,  6, 10, 11, 12, 16, 17, 18, 22, 23, 24]])
0 голосов
/ 11 марта 2020

Вы можете попробовать нарезать odd и even и передать их np.reshape.

a_out = np.reshape([a[::2], a[1::2]], (2,-1))

Out[81]:
array([[ 1,  2,  3,  7,  8,  9, 13, 14, 15, 19, 20, 21],
       [ 4,  5,  6, 10, 11, 12, 16, 17, 18, 22, 23, 24]])
...