UNIT 26
조건부 함수 이해하기
DATA SCIENCE FOR EVERYONE
where(c, a, b) 함수는 numpy의 삼항 연산자(if~else)다. where() 함수는 불 배열(c)과 두 배열(a와 b)을 파라미터로 받고 d[i] = a[i] if c[i] else b[i]를 반환한다. 이 배열은 모두 모양이 같아야 한다.
any()와 all() 함수는 각각 일부 혹은 모든 배열의 엘리먼트가 True라면 True를 반환한다.
nonzero() 함수는 0이 아닌 모든 엘리먼트의 인덱스를 반환한다.
‘UNIT 25. 유니버셜 함수 파헤치기’에서 우리는 S&P 주식 가격을 stocks 배열에 기록했다. 어느 주식의 가격이 눈에 띄게(주당 1.00달러 이상) 변화했는지 알아보려면 ‘작은’ 가격 변동을 0으로 바꾸고, 0이 아닌 엘리먼트를 찾은 후 주식 기호 배열에서 그들의 인덱스를 ‘스마트 인덱스’로 사용해 보자.
changes = np.where(np.abs(stocks[1] - stocks[0]) > 1.00,
stocks[1] - stocks[0], 0)
changes
>>>
array([-140.49, 0. , 1.51, 0. , 1.51, 0. , 1.26, 0. ])
# UNIT 22에서 sap에 주식 기호를 할당해 두었다.
sap[np.nonzero(changes)]
>>>
array(['MMM', 'ABBV', 'ACE', 'ADBE'],
dtype='<U4')