개발 꿀팁/PYTHON

[파이썬의 where 함수]

Jammie 2022. 11. 22. 14:45
반응형

1. where 함수의 정의
  
where 함수는 numpy 라이브러리에 있으며 일반적으로 함수를 호출하기 전에 numpy 라이브러리를 로드해야 합니다.함수의 기본 호출 문법은 두 가지가 있는데, 하나는 다음과 같다.

import numpy as np
np.where(arry)

이때 np.where 함수는 arry의 '진짜' 값의 좌표를 출력합니다('진짜'는 0이 아닌 것으로 이해될 수도 있음).또는 np.where 함수는 arry에서 특정 조건을 충족하는 요소를 반환합니다.예를 들어, 특정 조건을 충족하는 값의 인덱스 위치를 반환합니다.
  
다른 하나는 다음과 같다

import numpy as np
np.where(cond, x, y)

이때 np.where 함수는 cond 조건 출력 x를 만족시키고 출력 y를 만족시키지 않는다.where 함수의 정의를 보다 명확하게 이해할 수 있도록 다음 구체적인 예를 들어 기억을 쉽게 이해할 수 있도록 설명하겠습니다.
  
  

2. where 함수의 예
  

예 1: 수열에서 어떤 수보다 큰 위치 색인 찾기

y = np.array([1, 5, 6, 8, 1, 7, 3, 6, 9])
print(np.where(y>5))

결과를 얻다:

(array([2, 3, 5, 7, 8], dtype=int64),)

이때 np.where 함수는 값이 5보다 큰 인덱스 위치를 반환합니다.

  
  

예2: 수열에서 5보다 크면 'm_5'를 취한다. 그렇지 않으면 'lq_5'를 취한다

y = np.array(range(1, 10))
print(y)
print(np.where(y>5, 'm_5', 'lq_5'))

결과를 얻다:

[1 2 3 4 5 6 7 8 9]
['lq_5' 'lq_5' 'lq_5' 'lq_5' 'lq_5' 'm_5' 'm_5' 'm_5' 'm_5']

y는 초기값이 1이고 최종값이 9이고 단계가 1인 등차수 열입니다.이때 np.where 함수는 y>5 출력 'm_5'를 충족하고 출력 'lq_5'를 충족하지 않습니다.

  
  

예3: 수열에서 5보다 작으면 하나의 값을 취한다. 그렇지 않으면 다른 값을 취한다

print(np.arange(10))
print(np.where(np.arange(10)<5, '사과 먹기', '두리안 먹기'))

결과를 얻다:

[0 1 2 3 4 5 6 7 8 9]

'사과먹기' '사과먹기' '사과먹기' '사과먹기' '두리안먹기' '두리안먹기' '두리안먹기' '두리안먹기']
이때 np.where 함수는 np.arange(10)의 값이 5보다 작으면 '사과 먹기'가 되고 '두리안 먹기'가 되지 않습니다.

  

예4: 수열에서 2의 배수는 하나의 값을 취하고, 그렇지 않으면 다른 값을 취한다

y = np.array(range(1, 10))
print(y)
print(np.where(np.mod(y, 2)==0, '2b', 'n_2b'))

결과를 얻다:

[1 2 3 4 5 6 7 8 9]
['n_2b' '2b' 'n_2b' '2b' 'n_2b' '2b' 'n_2b' '2b' 'n_2b']

이때 np.where 함수는 y의 값을 2로 나눈 나머지가 0인 출력 '2b'를 충족하고 출력 'n_2b'를 충족하지 않습니다.

  

예 5: 데이터 상자에서 0이 아닌 데이터를 찾습니다

x = np.array([[0, 1, 2], [3, 0, 0], [6, 0, 8]])
print(x[np.where(x)])

결과를 얻다:

[1 2 3 6 8]

이때 np.where 함수는 x에서 0이 아닌 모든 숫자를 추출하여 새로운 수열을 생성합니다

 

반응형