2016-12-08 2 views
1

나는 3d 인스턴스가있는 데이터 집합을 나타내는 4d ​​numpy 배열을 가지고 있습니다. 배열의 모양이 (32, 32, 3, 73257)이라고합시다.4d numpy 배열 다시 배열

어떻게 배열 형태를 (73257, 32, 32, 3)으로 변경할 수 있습니까?

--- 질문 업데이트 rollaxis와 transpose가 모두이 트릭을 수행하는 것으로 보입니다.

고맙습니다. 답장을 보내 주셔서 감사합니다.

+1

Related - http://stackoverflow.com/questions/41022182/change-shape-of-nparray – Divakar

+0

'(3, 0, 1, 2) '를 사용하면'transpose'도 여기에서 작동합니다. – Eric

+0

당신 말이 맞습니다. . 나는 나의 답장을 가능한 빨리 바로 잡을 것이다. – Panos

답변

4

에 대한 arr[i,j,k,l] == arr2[l,i,j,k]을 할 것입니다 np.transpose 기능은 정확하게 당신이 원하는, 당신은 당신이 교환 할 축되는 제어하는 ​​축 인수를 전달할 수 있습니다 않습니다

a = np.empty((32, 32, 3, 73257)) 
b = np.transpose(a, (3, 0, 1, 2)) 

b의 축은 a의 치환 된 버전입니다. b의 축 0은 a의 3 번째 축이고, b의 축 1은 a의 0 번째 축입니다.

,

이렇게하면 사용자가 두 번째 또는 세 번째 자리에 원하는 크기 (32)의 축을 지정할 수

b = np.transpose(a, (3, 1, 0, 2)) 

또한 원하는 형상의 배열을 제공하지만, 이전 다르다.

0

np.rollaxis(arr, axis=-1)은 원하는대로 할 것입니다. 예 :

>>> arr = np.empty(32, 32, 3, 73257) 
>>> arr2 = np.rollaxis(arr, axis=-1) 
>>> arr2.shape 
(73257, 32, 32, 3) 

이 모든 ijkl