새소식

반응형
Library/NumPy

[NumPy] 넘파이 moveaxis() 함수

  • -
반응형

넘파이 moveaxis() 함수


넘파이(NumPy)의 moveaxis() 함수는 다차원 배열에서 축의 위치를 변경하는 데 사용된다. 이 함수는 배열의 축을 새로운 위치로 이동시키고, 이를 통해 배열의 형태를 조절할 수 있다.

 

moveaxis() 함수의 기본 구조는 아래와 같다.

import numpy as np

np.moveaxis(arr, source, destination)
  • arr - 축을 이동시킬 배열
  • source - 현재 위치한 축의 인덱스 또는 축의 이름
  • destination - 이동하고자 하는 새로운 위치의 인덱스 또는 축의 이름
import numpy as np

# 3차원 정수형 배열 생성
arr = np.zeros([2,3,4])

# 첫 번째 축을 마지막 축으로 이동
new_arr = np.moveaxis(arr, source = 0, destination = -1)

# 결과 출력
print("Original 3D Array")
print(arr)
print("\nNew 3D Array with Moved Axis")
print(new_arr)

print(f"arr.shape : {arr.shape}")
print(f"new_arr.shape : {new_arr.shape}")

위의 예제 코드에서는 moveaxis() 함수를 사용하여 3차원 배열의 첫 번째 축을 마지막 축으로 이동시켰다. 이 함수를 사용하면 다양한 축의 조작이 가능하며, 배열의 형태를 효과적으로 조절할 수 있다.

Original 3D Array
[[[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]]

New 3D Array with Moved Axis
[[[0. 0.]
  [0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]
  [0. 0.]]]
arr.shape : (2, 3, 4)
new_arr.shape : (3, 4, 2)

실행 결과

 

위의 실행 결과를 보면 축이 바뀐 걸 확인할 수 있다. 축이 어떻게 바뀌었는지 아래의 과정을 보고 자세히 살펴보자.

 

변경 전 

[ → 첫 번째 차원(안에 요소가 2개) 인덱스 : 0

    [ → 두 번째 차원(안에 요소가 3개) 인덱스 : 1

        [0. 0. 0. 0.] → 세 번째 차원(안에 요소가 4개) 인덱스 : 2 (혹은 -1)
        [0. 0. 0. 0.]
        [0. 0. 0. 0.]

    ]

 

    [ 

        [0. 0. 0. 0.]
        [0. 0. 0. 0.]
        [0. 0. 0. 0.]

    ]

]

 

따라서 우리는 (2,3,4)의 3차원 배열을 만들었고 우리가 바꿀 차원은 0 → -1(마지막 차원. 즉, 3번째)이다. 그래서 위에 과정을 살펴보았을 때 파란색 차원이 초록색 차원의 인덱스 위치로 이동하는 것이다.

 

그렇다면 파란색 차원안에 요소가 3개(첫 번째 차원이 맨 끝으로 이동 했으므로 한 차원씩 앞으로 당겨짐), 초록색 차원안에 요소가 2개가 들어가야 하는 의미이다.

 

변경 후

[ → 첫 번째 차원(안에 요소가 3개) 인덱스 : 0

    [ → 두 번째 차원(안에 요소가 4개) 인덱스 : 1

        [0. 0.] → 세 번째 차원(안에 요소가 2개) 인덱스 : 2 (혹은 -1)
        [0. 0.]
        [0. 0.]
        [0. 0.]

     ]

     [

         [0. 0.]
         [0. 0.]
         [0. 0.]
         [0. 0.]

     ]

     [

         [0. 0.]
         [0. 0.]
         [0. 0.]
         [0. 0.]

     ]

]

 

결론적으로 기존 배열의 구조인 (2,3,4)에서 2를 마지막 위치(-1)에 옮겼으므로 3,4가 앞으로 오고 2가 맨 마지막 자리에 위치하게 되어 (3,4,2)의 구조를 가진 3차원 배열로 변경되는 것이다.

 

오늘은 넘파이(NumPy)의 moveaxis() 함수에 대해 알아보았는데 moveaxis() 함수는 딥 러닝이나 머신 러닝에서 이미지나 시계열 데이터 등을 다룰 때 주로 활용되니 잘 익혀두는 게 좋을 거 같다.

 

 

읽어주셔서 감사합니다.

728x90
반응형

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

[NumPy] 넘파이 squeeze() 함수  (0) 2023.11.29
[NumPy] 넘파이 배열(array)  (0) 2023.11.26
[NumPy] 넘파이 swapaxes() 함수  (1) 2023.11.24
[NumPy] 넘파이 ravel() 함수  (0) 2023.11.23
[NumPy] 넘파이 transpose() 함수  (1) 2023.11.22
Contents

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

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