-
파이썬 데이터사이언스 핸드북 2 장 - 비교연산, 논리연산으로 부울배열을 만들고 마스킹 연산하자.데이터 분석/NumPy 2020. 5. 31. 13:16
비교연산자와 논리연산자를 모른다면 더보기 클릭
비교연산자, 논리연산자 각각에 해당하는 ufunc 가 있다.
더보기비교연산자
+, -, *, / 산술연산자 외에도 비교연산자도 활용할 수 있다. 물론 N차원 배열에 대해서도 비교연산자를 사용할 수 있다.
물론 N차원 배열에 대해서도 비교연산자를 사용할 수 있다.
논리 연산자
부울 연산자 여러 조건을 조합하고 싶다면, 파이썬의 비트 단위 논리 연산자 &, |, ^, ~ 를 사용할 수 있다. 표준 산술 연산자와 마찬가지로 NumPy 는 이 연산자를 일반적으로 부울 배열의 요소 단위로 동작하는 유니버셜 함수로 오버로딩한다.
&/| 를 정수에 사용할 때 표현식은 그 요소의 비트에 대해 동작하므로 그 숫자를 구성하는 개별 비트 단위로 and 와 or 을 적용하는 것과 같다. 결과를 산출하기 위해 이진 표현에 대응하는 비트를 비교한다는 점을 알아두자.
& np.bitwise_and
| np.bitwise_or
^ np.bitwise_xor
~ np.bitwise_not※ 키워드 and/or 는전체 객체의 참과 거짓을 측정하는 반면, 연산자 &/| 는 객체의 비트를 참조한다.
부울 배열로 작업하기
논리연산과 비교연산을 통해 부울 배열을 만든다. 그리고 부울 배열로 할 수 있는 작업들을 나열하였다.
요소 개수 세기
np.less(x,6) 또는 줄여서 x<6 는 부울 배열을 리턴한다. 부울 배열에 대해서도 카운트 또는 집계를 활용할 수 있다.
부울 배열에 대해서 집계할 때에는 False 는 0 으로, True 는 1 로 해석된다.
집계함수인 sum 을 쓰면 차원 (행, 열) 을 따라서 계산할 수도 있다.
값 중 하나라도 참이 있는지나 모든 값이 참인지 빠르게 확인하고 싶다면 np.any(), np.all() 을 사용하면 된다.
마스크로서의 부울 배열
더 강력한 패턴은 부울 배열을 마스크로 사용해 데이터 자체의 특정 부분 집합을 선택하는 것이다. subset of collections
이제 배열에서 조건에 맞는 값을 선택하려면 간단히 이 부울 배열을 인덱스로 사용하면 된다. 이를 마스킹 연산이라고 한다. 이 때, 이 부울 배열은 마스크 배열이다. (마스킹 연산의 대상이 되는 마스크)
반환된 값은 이 조건에 맞는 모든 값, 다시 말해 마스크 배열이 True 인 위치에 있는 모든 값으로 채워진 1차원 배열이다.
현실적인 예는 다음과 같다.
rainy, summer 는 부울 배열이다.
데이터셋에서 부울 배열을 마스크로 사용하면, 부울 배열 True 인 값에 대하여 데이터셋 부분집합을 제공한다.
물론 데이터셋 부분집합에 대해서도 집계함수를 활용할 수 있다.
'데이터 분석 > NumPy' 카테고리의 다른 글
파이썬 데이터사이언스 핸드북 2 장 - 정렬과 파티셔닝 (1) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 팬시 인덱싱 (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 비교, 마스크, 부울 로직 (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 배열 연산: 브로드캐스팅 (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2장 - Numpy 집계 (0) 2020.05.24