새소식

반응형
Library/NumPy

[NumPy] 넘파이 swapaxes() 함수

  • -
반응형

넘파이 swapaxes() 함수


swapaxes() 함수는 배열의 두 축을 서로 교환하여 새로운 배열을 반환하는 NumPy 함수이다. 이 함수는 주어진 두 축의 인덱스를 기반으로 배열의 차원을 교환한다. 이를 통해 배열의 모양을 변경할 수 있다. 

 

예를 들어, 2차원 배열에서 swapaxes() 함수를 사용하면 행과 열을 서로 교환할 수 있다. 이를 통해 배열의 모양이 변경된다. 함수의 사용은 아래와 같다.

import numpy as np

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

# 행과 열 교환
result_arr = arr_2d.swapaxes(0, 1)

print("Original 2D Array")
print(arr_2d)
print("\nSwapped Axes 2D Array")
print(result_arr)

위의 예제에서 swapaxes(0,1)은 첫 번째 축(행)과 두 번째 축(열)을 교환한다. 결과적으로 배열의 모양이 변하게 된다.

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

Swapped Axes 2D Array
[[1 4]
 [2 5]
 [3 6]]

실행 결과

 

결과적으로 swapaxes() 함수는 두 축을 교환하기 위해 사용되는 함수이다. 하지만 축을 교환하는 함수로 transpose() 함수 또한 있다. 그렇다면 두 함수의 차이점은 어떤 게 있을까?

 

  • 축의 순서 지정
    • transpose() 함수는 축의 순서를 사용자가 직접 지정하여 변경할 수 있다. 예를 들어, 2차원 배열의 경우 transpose()를 호출할 때 순서를 지정하지 않으면 자동으로 행과 열이 바뀐다.
    • swapaxes() 함수는 두 개의 축을 직접 지정하여 교환한다.(파라미터 2개까지만 받을 수 있다.)
  • 다차원 배열에서의 활용
    • transpose() 함수는 다차원 배열에서 유연하게 동작한다. 축의 순서를 변경할 때는 transpose()를 사용하는 편이 편리하다.
    • swapaxes() 함수는 주로 2차원 배열이나 특정한 축을 직접 교환할 때 사용한다. swapaxes() 함수는 파라미터를 2개까지 받을 수 있으므로 3차원 이상의 배열에서부터는 순차적으로 변경해줘야 한다. 
  • 파라미터 개수
    • transpose() 함수는 축의 순서를 지정하는 데에도 하나의 튜플 혹은 파라미터의 개수 제한이 없다.(n차원 가능)
    • swapaxes() 함수는 두 개의 축을 직접 지정하는 데에 두 개의 파라미터를 사용한다.(튜플이나 리스트로는 불가)

종합적으로, 두 함수는 배열의 차원 조작에 있어 다양한 상황에서 사용될 수 있으며, 사용자의 목적과 상황에 따라 선택하여 활용할 수 있다.

 

다음은 swapaxes() 함수를 사용하여 3차원 배열의 모든 축을 변경하는 예제를 살펴보자, 물론 3차원 이상의 배열의 축을 변경할 경우 transpose() 함수가 더 편리하겠지만 swapaxes() 함수로도 어떻게 사용하는지 한 번 살펴보자.

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]]])

# 모든 축 교환
swapped_arr_3d = arr_3d.swapaxes(0, 1).swapaxes(0, 2).swapaxes(1, 2)

# 결과 출력
print("Original 3D Array")
print(arr_3d)
print("\nSwapped 3D Array")
print(swapped_arr_3d)

위의 예제 코드에서는 swapaxes() 함수를 여러 번 사용하여 모든 축을 교환한다. 코드에서는 0번째 축과 1번째 축을 교환한 후, 0번째 축과 2번째 축을 교환하고, 마지막으로 1번째 축과 2번째 축을 교환한다. 결과적으로 모든 축의 순서가 변경된 것을 확인할 수 있다.

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

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

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

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

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

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

실행 결과

 

결론으로, swapaxes() 함수는 두 축을 직접 지정하여 교환하는 간단한 작업에 유리하다. 하지만 n차원(n > 2) 배열에서는 순차적으로 축을 변경하는 것이 번거로울 수 있다. transpose() 함수는 축의 순서를 사용자가 직접 지정하여 변경할 수 있어 더 유연하게 다차원 배열의 구조를 조작할 수 있다. 따라서 n차원(n > 2) 배열의 경우에는 transpose() 함수를 활용하는 것이 더 효율적이다.

 

 

읽어주셔서 감사합니다.

728x90
반응형

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

[NumPy] 넘파이 배열(array)  (0) 2023.11.26
[NumPy] 넘파이 moveaxis() 함수  (0) 2023.11.25
[NumPy] 넘파이 ravel() 함수  (0) 2023.11.23
[NumPy] 넘파이 transpose() 함수  (1) 2023.11.22
[NumPy] 넘파이 flatten() 함수  (0) 2023.11.21
Contents

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

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