2017-11-24 12 views
2

나는 numpy 배열 모양 (12,)을가집니다. [[1,2,3,4,5,6,7,8,9,10,11,12] 그건 내가 a.reshape을 시도모양을 사용하여 numpy에서 N 길이 벡터를 3x (N/3) 행렬로 바꿔 넣는 방법

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

가되도록 나는 그것을 바꿀하려면 (3,4)와 a.reshape (-1,4) 그러나 내가 원하는 것을 만들어내는 것은 없습니다. 이 작업을 수행하는 간단한 방법이 있습니까? 아니면 새 배열을 만들고 각 값을 개별적으로 설정해야합니까?

답변

3

모양 변경의 길이 3의 후반 두에 첫 번째 축 분할 및 트랜스합니다 -

a.reshape(-1,3).T 

또는 이성을 상실 재편 매개 변수와 함께 fortran 위해 바꿀 -

a.reshape(3,-1, order='F') 

샘플 실행 -

In [714]: a 
Out[714]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) 

In [715]: a.reshape(-1,3).T 
Out[715]: 
array([[ 1, 4, 7, 10], 
     [ 2, 5, 8, 11], 
     [ 3, 6, 9, 12]]) 

In [719]: a.reshape(3,-1, order='F') 
Out[719]: 
array([[ 1, 4, 7, 10], 
     [ 2, 5, 8, 11], 
     [ 3, 6, 9, 12]]) 
+0

nu에 메모를 추가 할 가치가 있는지 궁금합니다. (. (A, B, C)). T는'.reshape ((C, B, A), order = 'F')와 동일합니다. 'order' 인수 – Eric

+0

@ Eric 실제로는 의미가 있으며 소리가 간단합니다. 그래서 필자가 생각하는 문서에 그 길을 추가할만한 가치가있다. – Divakar