重新排列numpy数组

时间:2016-04-29 16:51:48

标签: python numpy

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]]

但回答是错误的。怎么做?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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]])