넘파이 swapaxes() 함수
swapaxes() 함수는 배열의 두 축을 서로 교환하여 새로운 배열을 반환하는 NumPy 함수이다. 이 함수는 주어진 두 축의 인덱스를 기반으로 배열의 차원을 교환한다. 이를 통해 배열의 모양을 변경할 수 있다.
예를 들어, 2차원 배열에서 swapaxes() 함수를 사용하면 행과 열을 서로 교환할 수 있다. 이를 통해 배열의 모양이 변경된다. 함수의 사용은 아래와 같다.
위의 예제에서 swapaxes(0,1)은 첫 번째 축(행)과 두 번째 축(열)을 교환한다. 결과적으로 배열의 모양이 변하게 된다.
실행 결과
결과적으로 swapaxes() 함수는 두 축을 교환하기 위해 사용되는 함수이다. 하지만 축을 교환하는 함수로 transpose() 함수 또한 있다. 그렇다면 두 함수의 차이점은 어떤 게 있을까?
- 축의 순서 지정
- transpose() 함수는 축의 순서를 사용자가 직접 지정하여 변경할 수 있다. 예를 들어, 2차원 배열의 경우 transpose()를 호출할 때 순서를 지정하지 않으면 자동으로 행과 열이 바뀐다.
- swapaxes() 함수는 두 개의 축을 직접 지정하여 교환한다.(파라미터 2개까지만 받을 수 있다.)
- 다차원 배열에서의 활용
- transpose() 함수는 다차원 배열에서 유연하게 동작한다. 축의 순서를 변경할 때는 transpose()를 사용하는 편이 편리하다.
- swapaxes() 함수는 주로 2차원 배열이나 특정한 축을 직접 교환할 때 사용한다. swapaxes() 함수는 파라미터를 2개까지 받을 수 있으므로 3차원 이상의 배열에서부터는 순차적으로 변경해줘야 한다.
- 파라미터 개수
- transpose() 함수는 축의 순서를 지정하는 데에도 하나의 튜플 혹은 파라미터의 개수 제한이 없다.(n차원 가능)
- swapaxes() 함수는 두 개의 축을 직접 지정하는 데에 두 개의 파라미터를 사용한다.(튜플이나 리스트로는 불가)
종합적으로, 두 함수는 배열의 차원 조작에 있어 다양한 상황에서 사용될 수 있으며, 사용자의 목적과 상황에 따라 선택하여 활용할 수 있다.
다음은 swapaxes() 함수를 사용하여 3차원 배열의 모든 축을 변경하는 예제를 살펴보자, 물론 3차원 이상의 배열의 축을 변경할 경우 transpose() 함수가 더 편리하겠지만 swapaxes() 함수로도 어떻게 사용하는지 한 번 살펴보자.
위의 예제 코드에서는 swapaxes() 함수를 여러 번 사용하여 모든 축을 교환한다. 코드에서는 0번째 축과 1번째 축을 교환한 후, 0번째 축과 2번째 축을 교환하고, 마지막으로 1번째 축과 2번째 축을 교환한다. 결과적으로 모든 축의 순서가 변경된 것을 확인할 수 있다.
실행 결과
결론으로, swapaxes() 함수는 두 축을 직접 지정하여 교환하는 간단한 작업에 유리하다. 하지만 n차원(n > 2) 배열에서는 순차적으로 축을 변경하는 것이 번거로울 수 있다. transpose() 함수는 축의 순서를 사용자가 직접 지정하여 변경할 수 있어 더 유연하게 다차원 배열의 구조를 조작할 수 있다. 따라서 n차원(n > 2) 배열의 경우에는 transpose() 함수를 활용하는 것이 더 효율적이다.
읽어주셔서 감사합니다.