2016-04-29 274 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)