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

Die erwartete Antwort sein sollte:Umstellen numpy Array

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

Ich versuchte so

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

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

Aber Antwort ist falsch. Wie es geht?

Antwort

0

I split für diese Operation verwenden würde:

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

Sie könnten einige Umformungs und Austausch von Achsen verwenden, wie so -

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

Oder verwenden np.transpose die Achsen zu tauschen, wie so -

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