본문 바로가기
  • Hello_
Python/Numpy

[Python] np.transpose(), np.swapaxes() - 차원 및 축 변경하기

by LDwDL 2022. 9. 12.
728x90
반응형

오늘은 넘파이 행렬의 행과 열, 즉 차원을 변경하는 몇 가지 방법에 대해 포스팅하겠다.

 

np.transpose()

입력되는 넘파이 어레이의 전치 행렬을 출력해준다. np.transpose와 동일하게 입력 데이터 바로 뒤에 ".T"를 추가하여 손쉽게 전치시키는 방법도 있다.

import numpy as np

example_2D = np.random.randint(10,size=(2,3))
print(example_2D.shape)
# (2, 3)

exam_1 = example_2D.T
exam_2 = np.transpose(example_2D)

print(exam_1.shape,exam_2.shape)
# (3, 2) (3, 2)
print(exam_1 == exam_2)
"""
[[ True  True]
 [ True  True]
 [ True  True]]
"""

 

추가적으로 3D 입력에도 np.transpose는 유용하다. 입력 데이터의 차원을 원하는 차원으로 손쉽게 바꿀 수 있다.

간혹 차원 입력이 헷갈릴 때가 있는데, 입력 데이터 차원의 인덱스를 출력 데이터의 차원에 순서대로 끼워 넣는다고 생각하면 수월하다.

example_3D = np.random.randint(10,size=(2,3,4))
exam_3 = np.transpose(example_3D, (2,0,1))
print(exam_3.shape)
# (4, 2, 3)

 

np.swapaxes()

np.swapaxes 또한 np.traspose와 동일한 역할을 수행한다.

다만, np.transpose와 같이 한번에 3개 이상의 차원을 바꾸지는 못하며 두 개의 차원을 swap 하도록 해준다.

인자들은 axis1과 axis2가 있으며 바꿀 차원을 정했다면 입력되는 차원 인덱스 순서는 바뀌어도 문제는 없다.

exam_4 = np.swapaxes(example_2D,axis1=0,axis2=1)

print(exam_4.shape)
# (3, 2)
print(exam_1 == exam_4)
"""
[[ True  True]
 [ True  True]
 [ True  True]]
"""

exam_5 = np.swapaxes(example_3D,axis1=0,axis2=1)
exam_6 = np.swapaxes(example_3D,axis1=0,axis2=-1)
exam_7 = np.swapaxes(example_3D,axis1=-1,axis2=0)

print(exam_5.shape,exam_6.shape,exam_7.shape)
# (3, 2, 4) (4, 3, 2) (4, 3, 2)

 

 

다음 두가지 방법을 통해 넘파이 어레이의 행과 열을 바꿀 뿐만 아니라 차원 자체의 변경이 가능해지기 때문에 고차원 데이터를 다루는데 필수적이다.

 

 

 

728x90
반응형

댓글