ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 데이터사이언스 핸드북 2 장 - 비교연산, 논리연산으로 부울배열을 만들고 마스킹 연산하자.
    데이터 분석/NumPy 2020. 5. 31. 13:16

    비교연산자와 논리연산자를 모른다면 더보기 클릭

    비교연산자, 논리연산자 각각에 해당하는 ufunc 가 있다. 

    더보기

     

    비교연산자

    +, -, *, / 산술연산자 외에도 비교연산자도 활용할 수 있다. 물론 N차원 배열에 대해서도 비교연산자를 사용할 수 있다. 

    ufunc 으로서의 비교연산자

     

    물론 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 을 쓰면 차원 (행, 열) 을 따라서 계산할 수도 있다. 

     axis 에 따른 집계

     

    값 중 하나라도 참이 있는지나 모든 값이 참인지 빠르게 확인하고 싶다면 np.any(), np.all() 을 사용하면 된다.

    np.any(), np.all()

     

     

    마스크로서의 부울 배열

    더 강력한 패턴은 부울 배열을 마스크로 사용해 데이터 자체의 특정 부분 집합을 선택하는 것이다. subset of collections

    이제 배열에서 조건에 맞는 값을 선택하려면 간단히 이 부울 배열을 인덱스로 사용하면 된다. 이를 마스킹 연산이라고 한다. 이 때, 이 부울 배열은 마스크 배열이다. (마스킹 연산의 대상이 되는 마스크) 

    반환된 값은 이 조건에 맞는 모든 값, 다시 말해 마스크 배열이 True 인 위치에 있는 모든 값으로 채워진 1차원 배열이다.

     

     

     

    현실적인 예는 다음과 같다. 

     

    rainy, summer 는 부울 배열이다.

    부울 배열

     

    데이터셋에서 부울 배열을 마스크로 사용하면, 부울 배열 True 인 값에 대하여 데이터셋 부분집합을 제공한다. 

    부울배열을 마스크로 사용하여 부분집합 선택

     

    물론 데이터셋 부분집합에 대해서도 집계함수를 활용할 수 있다.

     

     

     

     

    댓글

Designed by Tistory.