2013-10-29 6 views
7

Ich habe ein 4-dimensionales, numpiges Array von Form . Bei einem Zeilen- und Spaltenindex (i, j) ist mat[i,j] eine QxQ Matrix. Ich möchte dieses Array neu zu gestalten (N*Q, N*Q) so zu gestalten, dass4d numpy-Array zu 2d-Array umformen, wobei Array-Positionen erhalten bleiben

array([[[[ 0, 1], 
     [ 2, 3]], 

     [[ 4, 5], 
     [ 6, 7]]], 


     [[[ 8, 9], 
     [10, 11]], 

     [[12, 13], 
     [14, 15]]]]) 

zu

array([[ 0., 1., 4., 5.], 
     [ 2., 3., 6., 7.], 
     [ 8., 9., 12., 13.], 
     [ 10., 11., 14., 15.]]) 

geht können Sie sehen, dass mat[0,0] zu new_mat[0:2, 0:2] geht. Derzeit mat.reshape(N*Q, N*Q) dauert mat[0,0] bis new_mat[0:4, 0] (was ich nicht will). Wie kann ich Umformen oder Rolllaxis oder ähnliches verwenden, um dieses Array neu zu gestalten? Ich will es schließlich mit imshow plotten, bin derzeit stecken. Ich denke, es ist einfach zu tun, ich habe es noch nicht herausgefunden.

Antwort

5

Nevermind, ich habe es herausgefunden. np.swapaxes(1, 2) war das fehlende Stück, das ich brauchte.

Die Antwort ist nur zu tun mat.swapaxes(1, 2).reshape(N*Q, N*Q).

Fühle mich töricht für Posting, ohne zu versuchen, es selbst zu lange herauszufinden, aber ich werde es lassen, damit andere davon profitieren können.