2013-01-23 2 views
25

의 배열 모양을 변경 :는 다음의 형태 (단지 일례)의 배열을 고려 NumPy와

[[ 0 1] 
[ 2 3] 
[ 4 5] 
[ 6 7] 
[ 8 9] 
[10 11] 
[12 13] 
[14 15] 
[16 17]] 

그것의 형태는이다 [9,2].

[[ 0 6 12] 
[ 2 8 14] 
[ 4 10 16]] 
[[ 1 7 13] 
[ 3 9 15] 
[ 5 11 17]] 

가장 확실한 (확실 '비 파이썬 ") 용액 제로의 어레이를 초기화하는 각 열이 같은 형상 [3,3]가되도록 이제 어레이를 변환 할 적절한 차원으로 두 개의 for-loops를 실행하여 데이터로 채 웁니다. 나는 ...`b` 지금이 자리에 재편 할 수 없음을 의미하는 연속 아니라고

답변

40
a = np.arange(18).reshape(9,2) 
b = a.reshape(3,3,2).swapaxes(0,2) 

# a: 
array([[ 0, 1], 
     [ 2, 3], 
     [ 4, 5], 
     [ 6, 7], 
     [ 8, 9], 
     [10, 11], 
     [12, 13], 
     [14, 15], 
     [16, 17]]) 


# b: 
array([[[ 0, 6, 12], 
     [ 2, 8, 14], 
     [ 4, 10, 16]], 

     [[ 1, 7, 13], 
     [ 3, 9, 15], 
     [ 5, 11, 17]]]) 
+15

참고 언어에 부합하는 솔루션에 관심이 있어요 :'b.reshape (9, 2)' 동일한 데이터의 뷰가 아닌 복사본을 반환하고,'b.shape = (9, 2)'가 발생하고 오류가 발생합니다. – Jaime

+3

매우 @Jaime의 매우 중요한 코멘트입니다. Shape의 포인트는 복제본없이 낙관적 인 크기 조정을 허용하는 것입니다. 대용량 데이터 세트와 큰 거래 – deepelement