새소식

반응형
Library/NumPy

[NumPy] 넘파이 transpose() 함수

  • -
반응형

넘파이 로고 이미지입니다.
넘파이

넘파이 transpose() 함수


transpose() 함수는 다차원 배열의 축을 교환하여 배열의 차원을 바꾸는 함수이다. 이 함수를 사용하면 배열의 행과 열을 교환할 수 있다. 다차원 배열에서는 각 차원의 순서를 변경함으로써 배열의 형태를 조작할 수 있다. 일반적으로 행렬의 전치(transpose)를 수행할 때 많이 사용된다. 전치는 행렬의 행과 열을 서로 맞바꾸는 작업을 의미한다.

 

전치는 다양한 계산 및 작업에서 유용하게 활용된다. 예를 들어, 이미지 데이터의 차원을 변경하거나 행과 열을 교환하여 데이터를 적절하게 조작할 때 transpose() 함수가 유용하게 사용될 수 있다.

 

transpose() 함수를 사용한 2차원 배열의 전치

import numpy as np

# 2차원 배열 생성
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# transpose 함수를 사용하여 배열의 전치 수행
transposed_arr = arr.transpose()

# 결과 출력
print("Original Array")
print(arr)
print("\nTransposed Array")
print(transposed_arr)
Original Array
[[1 2 3]        
 [4 5 6]]       

Transposed Array
[[1 4]
 [2 5]
 [3 6]]

실행 결과

 

transpose() 함수를 사용하여 원본 배열의 을 서로 맞바꾸어 새로운 배열을 생성하였다. 결과적으로 행이 열로, 열이 행으로 바뀐 것을 확인할 수 있다. (2 x 3 → 3 x 2로 변경)

 

 

transpose() 함수를 사용한 3차원 배열의 전치

import numpy as np

# 3차원 배열 생성
arr_3d = np.array([[[1, 2, 3], [4, 5, 6]],
                   [[7, 8, 9], [10, 11, 12]],
                   [[13, 14, 15], [16, 17, 18]]])

# 축 순서를 지정하여 transpose 수행
transposed_arr_3d = arr_3d.transpose(0, 2, 1)

# 결과 출력
print("Original 3D Array")
print(arr_3d)
print("\nTransposed 3D Array")
print(transposed_arr_3d)
Original 3D Array
[[[ 1  2  3] 
  [ 4  5  6]]

 [[ 7  8  9] 
  [10 11 12]]

 [[13 14 15] 
  [16 17 18]]]

Transposed 3D Array
[[[ 1  4]
  [ 2  5]
  [ 3  6]]

 [[ 7 10]
  [ 8 11]
  [ 9 12]]

 [[13 16]
  [14 17]
  [15 18]]]

실행 결과

 

3차원 배열의 경우 또한 transpose() 함수를 사용하여 축의 순서를 변경할 수 있다.

 

transpose(0,2,1)은 배열이 3차원이므로 총 3개의 파라미터가 들어가게 된다. 위의 예제에서 파라미터의 각 의미는 다음과 같다.

  • 첫 번째 파라미터 = 첫 번째 차원
  • 두 번째 파라미터 = 두 번째 차원
  • 세 번째 파라미터 = 세 번째 차원

따라서 transpose(0,2,1)은 축의 순서를 다음과 같이 변경한다.

  • 0번 축은 그대로 유지된다.
  • 1번 축과 2번 축을 서로 바꾼다.

이렇게 하면 원본 배열의 1번 축과 2번 축이 서로 바뀌게 되어, 전치된 배열이 생성된다. 이것은 주로 다차원 배열에서 축의 순서를 조정할 때 활용된다.

 

여기서 주의할 점은 해당 배열은 3차원이므로 인덱스도 0,1,2까지 존재한다. 하지만 예를 들어, transpose(0,2,4)와 같이 축의 인덱스가 배열의 차원보다 크거나 같으면 오류가 발생한다. 배열의 차원은 0부터 시작하므로 주어진 축의 인덱스는 배열의 차원에 맞아야 한다. 만약 그렇지 않으면 AxisError가 발생한다. 따라서 유효한 축의 인덱스 범위 내에서 사용해야 한다.

 

 

 

transpose() 함수를 사용한 3차원 배열의 전치(transpose()에 파라미터가 없을 때)

import numpy as np

# 3차원 배열 생성
arr_3d = np.array([[[1, 2, 3], [4, 5, 6]],
                   [[7, 8, 9], [10, 11, 12]],
                   [[13, 14, 15], [16, 17, 18]]])

# 축 순서를 지정하여 transpose 수행
transposed_arr_3d = arr_3d.transpose()

# 결과 출력
print("Original 3D Array")
print(arr_3d)
print("\nTransposed 3D Array")
print(transposed_arr_3d)
Original 3D Array
[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]

 [[13 14 15]
  [16 17 18]]]

Transposed 3D Array
[[[ 1  7 13]
  [ 4 10 16]]

 [[ 2  8 14]
  [ 5 11 17]]

 [[ 3  9 15]
  [ 6 12 18]]]

실행 결과

 

2차원 배열의 경우에는 transpose() 함수를 호출할 때 따로 파라미터를 설정하지 않아도  이 바뀐다. 하지만 3차원 이상의 배열에서는 축의 순서를 명시적으로 지정해주어야 한다. transpose() 함수를 사용할 때 파라미터를 설정하지 않는 경우에는 기본적으로 배열의 모든 축을 역전시키게 된다. 따라서 3차원 이상의 배열에서는 어떤 축을 어떻게 변경할지 명시적으로 지정하는 것이 좋다.

 

 

읽어주셔서 감사합니다.

728x90
반응형

'Library > NumPy' 카테고리의 다른 글

[NumPy] 넘파이 swapaxes() 함수  (1) 2023.11.24
[NumPy] 넘파이 ravel() 함수  (0) 2023.11.23
[NumPy] 넘파이 flatten() 함수  (0) 2023.11.21
[NumPy] 넘파이 resize() 함수  (0) 2023.11.19
[NumPy] 넘파이 reshape() 함수  (0) 2023.11.18
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.