본문 바로가기

Untagged

[numpy] unravel_index

728x90
728x90

넘파이에서는 unravel_index라는 함수를 이용해서 어떤 index를 인자로 넘겨받은 shape에 매핑되는 index를 반환받을 수 있다.

 

numpy docs에서는 다음과 같은 예제를 보여준다.

 

>>> np.unravel_index([22, 41, 37], (7,6))
(array([3, 6, 6]), array([4, 5, 1]))

 

이 코드는 인자로 주어진 리스트의 index들인 22, 41, 37을 7*6 행렬에 매핑한 결과인 row index [3, 6, 6], column index [4, 5, 1]을 반환한 것을 볼 수 있다.

 

스택 오버플로우 스레드에서 아래와 같은 시각화 자료를 보여준다.

 

      [[ 0,   1,   2,   3,   4,   5],
       [ 6,   7,   8,   9,  10,  11],
       [12,  13,  14,  15,  16,  17],
       [18,  19,  20,  21, *22*, 23],  <- (3, 4)
       [24,  25,  26,  27,  28,  29],
       [30,  31,  32,  33,  34,  35],
       [36, *37*, 38,  39,  40, *41*]]
           (6, 1)               (6,5)

 

이를 보면 unravel_index가 어떤 역할을 하는지 쉽게 이해할 수 있다.

 

unravel_index는 3차원 이상의 텐서에서도 적용이 가능하니 flatten array를 효과적으로 다룰 수 있다.

728x90
728x90

'Untagged' 카테고리의 다른 글

PS 노베이스의 ICPC 도전 가이드  (1) 2024.01.01
리팩터링 2판 요약 - 챕터 6  (1) 2023.12.17
리팩터링 2판 요약 - 챕터 3  (0) 2023.12.03
리팩터링 2판 요약 - 챕터 2  (1) 2023.11.12