Перестановка массива NumPy

1
import numpy as np
a = np.array([[1,2],
              [3,4],
              [5,6],

             [7,8],
             [9,10],
             [11,12]])
print np.shape(a)

Ожидаемый ответ:

answer = np.array([[1,2,7,8],
              [3,4, 9, 10],
              [5,6, 11, 12]])

Я пробовал как

ans = a.reshape(3,-1)    
print ans

[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

Но ответ неверен. Как это сделать?

Теги:
numpy

2 ответа

0
Лучший ответ

Я использовал бы split для этой операции:

In [110]: np.hstack(np.split(a,2))
Out[110]:
array([[ 1,  2,  7,  8],
       [ 3,  4,  9, 10],
       [ 5,  6, 11, 12]])
2

Вы можете использовать некоторую перестановку и замену осей, например:

L = 3 # Cutting length
out = a.reshape(-1,L,a.shape[1]).swapaxes(0,1).reshape(L,-1)

Или используйте np.transpose для замены осей, например:

out = a.reshape(-1,L,a.shape[1]).transpose(1,0,2).reshape(L,-1)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню