더북(TheBook)

UNIT 26
조건부 함수 이해하기

DATA SCIENCE FOR EVERYONE icon_day

 

where(c, a, b) 함수는 numpy의 삼항 연산자(if~else)다. where() 함수는 불 배열(c)과 두 배열(ab)을 파라미터로 받고 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')

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.