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
반응형
'Python > Numpy' 카테고리의 다른 글
[Python] np.argmax, np.argmin - 넘파이 최댓값, 최솟값 인덱스 찾기 (0) | 2022.09.12 |
---|---|
[Python] np.concatenate() - 넘파이 어레이 합치기 (0) | 2022.09.12 |
[Python] np.newaxis, np.expand_dims(), np.squeeze() - 차원 및 축 조절하기 (0) | 2022.09.12 |
[Python] np.random - 난수 생성하기 (0) | 2022.09.12 |
[Python] numpy - np.linspace와 np.arange의 차이점 (0) | 2022.09.09 |
댓글