본문 바로가기
기타

numpy where 기능소개

by 블로그별명 2023. 2. 21.

넘파이 array를 대상으로만 사용가능하다

 

두가지 기능이있다

첫번째 인덱스 반환

조건식이 주어졌을때 말그대로 어디(where)있는지 알려준다 (출력이 튜플인건 맘에에 안든다)

형식은 np.where(조건) 이며, 조건에 부합하는 인덱스를 출력한다

import numpy as np
array=np.arange(17,27)
print(array)
print(np.where(array>20))

>>> [17 18 19 20 21 22 23 24 25 26]
>>> (array([4, 5, 6, 7, 8, 9]),)

인덱스가 깔끔한 형태로는 출력되지않아 재가공이 필요하다

array = np.array( [[ [1001,2],[3,4] ], [ [1087,2],[1,1]] ] )
print(array)
print(np.where(array>1000))

>>>  [[[1001    2]
      [   3    4]]

     [[1087    2]
      [   1    1]]]
>>>  (array([0, 1]), array([0, 0]), array([0, 0]))

2차원리스트에서 where를 실행시키게 되면 조건에 부합하는 항목의 인덱스의 좌표를

디멘션을 기준으로 나눠서 들고온다 말이 복잡한데 예시를 보면 바로 이해가 될것이다

 

두번째 조건에 따른 True, False 브로드 캐스팅

이기능은 임계점에 따라 True, False로 나눌때 유용한 기능인것같다 이점때문에 사실 np.where가 쓸만하다 느꼈고 

알게된김에 포스팅도 하게되었다

형식은 np.where(where, 조건True변환할 값, 조건 False일때 변환할 값)

a = np.random.rand(5)
print(a)
print(np.where(a>0.5, 1, 0))

>>> [0.06056743 0.64294922 0.29549087 0.70656652 0.58352075]
>>> [0 1 0 1 1]

 

출처

https://jimmy-ai.tistory.com/46

댓글