>  기사  >  백엔드 개발  >  3차원 배열을 전치하는 numpy.transpose 메서드

3차원 배열을 전치하는 numpy.transpose 메서드

不言
不言원래의
2018-04-17 15:33:003958검색

다음은 numpy.transpose의 3차원 배열 전치 방법에 대한 글입니다. 참고할만한 좋은 내용이 있어 모두에게 도움이 되었으면 좋겠습니다. 와서 살펴봅시다

아래와 같이

import numpy as np

3차원 배열

arr1 = np.arange(16).reshape((2, 2, 4)) 
#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]] 
 
arr2=arr1.transpose((1,0,2)) 
#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]

양수열은 (0, 1, 2) ,

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

tanspose (1, 0, 2)를 입력하면 왜 배열이

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

가 되는가? 주의 깊게 관찰해 보면 전치 후 배열과 전치 후 배열의 차이를 알 수 있습니다. 전치 전 배열은 첫 번째 페이지의 두 번째 줄과 두 번째 페이지의 첫 번째 줄이 바뀌는데 왜 그럴까요?

arr1[0,1,0]을 사용하면 인덱스 값이 4

arr2[1,0,0]을 사용하면 인덱스 값이 4

변경 사항과 양수 순서를 비교하세요 인덱스 매개변수 테이블의 전치 순서 차이와 어떤 연관이 있는 것 같습니다

arr1 배열의 경우 인덱스 매개변수 테이블 [0, 0, x]는 현재 두 매개변수 이후의 첫 번째 행을 나타낼 수 있습니다. 같은 요소의 인덱스가 바뀌었습니다. 매개변수 테이블은 변경되지 않았습니다

따라서 arr2의 첫 번째 페이지의 첫 번째 행은 arr1의 첫 번째 페이지의 첫 번째 행과 같습니다

arr1 배열의 경우 인덱스 매개변수 테이블 [0, 1, x]는 첫 번째 페이지의 두 번째 행을 나타낼 수 있습니다. 현재 두 매개변수가 교체된 후 [0, 1, 0]과 같은 동일한 요소의 인덱스 값은 [1, 0, 0]이 됩니다. ,

인덱스 값이 4인 인덱스 매개변수 테이블의 차이점을 설명합니다.

이것은 대략적인 개념이므로 배열의 첫 번째 페이지의 두 번째 행인 transpose(1,0,2)와 두 번째 페이지의 첫 번째 행이 바뀌었습니다

다음 네 가지 전치 방법도 거의 같은 생각입니다. 주의 깊게 관찰하면 이해하기 어렵지 않을 것입니다.

arr3=arr1.transpose((0,2,1)) 
 
# [[[ 0 4] 
# [ 1 5] 
# [ 2 6] 
# [ 3 7]] 
# 
# [[ 8 12] 
# [ 9 13] 
# [10 14] 
# [11 15]]] 
 
arr4=arr1.transpose((2,0,1)) 
#[[[ 0 4] 
# [ 8 12]] 
# 
# [[ 1 5] 
# [ 9 13]] 
# 
# [[ 2 6] 
# [10 14]] 
# 
# [[ 3 7] 
# [11 15]]]

여기서 주목해야 할 것은 arr4 배열이 4페이지입니다. 페이지 번호와 줄 코드가 바뀌고

페이지 번호가 2에서 4

으로 변경되어 2가 되었기 때문입니다.

arr5=arr1.transpose((2,1,0)) 
#[[[ 0 8] 
# [ 4 12]] 
# 
# [[ 1 9] 
# [ 5 13]] 
# 
# [[ 2 10] 
# [ 6 14]] 
# 
# [[ 3 11] 
# [ 7 15]]] 
 
arr6=arr1.transpose((1,2,0)) 
#[[[ 0 8] 
# [ 1 9] 
# [ 2 10] 
# [ 3 11]] 
# 
# [[ 4 12] 
# [ 5 13] 
# [ 6 14] 
# [ 7 15]]]

또한 전치 (2, 0, 1)은 먼저 전치 (0, 2, 1)로 볼 수 있습니다. 그런 다음 전치 (1, 0, 2)

전치 (2, 1, 0) 먼저 전치 (1, 0, 2), 다음 전치 (0, 2, 1), 마지막으로 전치 (1, 0, 2)로 볼 수 있습니다

전치 (1, 2, 0)는 전치로 볼 수 있습니다 (1, 0, 2)를 먼저 바꾼 다음 (0, 2, 1)을 바꿉니다

코드는 다음과 같이 작성할 수 있습니다.

arr4=arr1.transpose(0,2,1).transpose(1,0,2)

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

같은 결과입니다!

관련 권장사항:

numpy에서 배열과 asarray의 차이점

numpy에서 부울 배열을 처리하는 방법

위 내용은 3차원 배열을 전치하는 numpy.transpose 메서드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.