새소식

반응형
Library/NumPy

[NumPy] 넘파이 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
반응형

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

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