2013-10-29 10 views
7

Mam czterowymiarowy zbiór numpy o rozmiarze (N, N, Q, Q). Tak więc biorąc pod uwagę indeks wiersza i kolumny (i, j), mat[i,j] jest macierzą QxQ. Chcę przekształcić tę tablicę kształtować (N*Q, N*Q) takie, żeZmień zniekształconą macierz 4d w tablicę 2d, zachowując lokalizacje w tablicach.

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

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


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

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

idzie

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

Widać, że mat[0,0] idzie new_mat[0:2, 0:2]. Obecnie mat.reshape(N*Q, N*Q) trwa mat[0,0] do new_mat[0:4, 0] (czego nie chcę). Jak mogę użyć przekształcenia lub rollaxis lub czegoś podobnego do przekształcenia tej tablicy? W końcu chcę go wykreślić za pomocą imshow, jestem obecnie zablokowany. Myślę, że to łatwe, po prostu jeszcze tego nie rozgryzłem.

Odpowiedz

5

Nieważne, rozgryzłem to. np.swapaxes(1, 2) był brakującym elementem, którego potrzebowałem.

Odpowiedź brzmi po prostu mat.swapaxes(1, 2).reshape(N*Q, N*Q).

Poczuj się głupio, że nie publikujesz się zbyt długo, ale zostawię to, aby inni mogli z tego skorzystać.

Powiązane problemy