2016-04-29 242 views
1
import numpy as np 
a = np.array([[1,2], 
       [3,4], 
       [5,6], 

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

预期的答案应该是:重新排列numpy的阵列

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

但答案是错的。怎么做?

回答

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)