Python/Numpy

[Numpy] 파이썬 배열 회전 함수 : np.rot90

jimmy_AI 2022. 8. 8. 20:35
반응형

Python 넘파이 배열 회전 함수 사용법

파이썬에서 배열을 회전한 결과를 쉽게 반환받을 수 있는

넘파이 모듈의 rot90 함수의 사용 방법에 대하여 간략하게 다루어보겠습니다.

참고로, 해당 글은 numpy.rot90 함수의 공식 document의 내용을 기반으로 작성하였습니다.

 

 

2차원 배열 예시

np.rot90 메소드의 사용법은 (input array, 회전 횟수)로 인자를 지정하는 형태로 간단합니다.

이 때, 회전의 기준은 횟수 1회당 반시계 방향으로 90도씩 회전하도록 되어있습니다.

(즉, 4로 나눈 나머지만 중요하며, 0, 4 등 숫자 지정 시 기존 array가 그대로 반환됩니다.)

import numpy as np

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

print(np.rot90(a, 1)) # 반시계 방향 90도 회전
[[3 6 9]
 [2 5 8]
 [1 4 7]]

print(np.rot90(a, 2)) # 180도 회전
[[9 8 7]
 [6 5 4]
 [3 2 1]]

print(np.rot90(a, 3)) # 시계 방향 90도(반시계 방향 270도) 회전
[[7 4 1]
 [8 5 2]
 [9 6 3]]

 

반응형

 

3차원 이상 배열 예시

3차원 이상의 고차원 배열에 대하여도 rot90 메소드를 적용할 수 있습니다.

다만, 이 때는 기존 인자에 회전 기준 축 번호인 axes 인자를 추가로 지정해주는 것이 좋으며,

n차원 배열인 경우 axes 인자 값을 (n-2, n-1)로 지정한다면

가장 내부의 2차원 array 내에서의 회전이 이루어집니다.

 

참고 : axes 인자에는 정수 2개를 튜플 등 형태로 적어야 하며, 같은 숫자가 두 번

들어올 수는 없고, (1, 2)와 (2, 1) 형태의 input끼리는 반대 방향의 회전이 이루어집니다.

b = np.array([[[1, 2],
              [3, 4]],
              
              [[5, 6],
               [7, 8]]])

# 각 2차원 배열 기준 반시계 방향 90도 회전
print(np.rot90(b, 1, axes = (1, 2)))
[[[2 4]
  [1 3]]

 [[6 8]
  [5 7]]]

# axes를 다르게 지정한 경우 예시
print(np.rot90(b, 1, axes = (0, 2)))
[[[2 6]
  [4 8]]

 [[1 5]
  [3 7]]]