[Numpy] Bool 이용하기

반응형
    반응형

    Bool을 이용하는 방법에 대해 설명하겠습니다.

     

    Boolean indexing

    ndarray도 인덱싱이 가능하다는 것은 앞서 작성한 포스팅을 보면 알 수 있습니다. 그런데 이 ndarray에서 조건에 맞는 원소만 가져오도록 하겠습니다. 파이썬 list와 똑같이 합니다.

    import numpy as np
    np.random.seed(22)
    x = np.random.randint(1,100,size=10)

    x를 100까지 수에서 아무거나 가져오고 여기서 짝수만 가져와보겠습니다.

    even = x%2==0
    print(even)
    print(x[even])

     

    even을 위에 만든 x의 각 원소를 2로 나눴을때 나머지가 0이 되는 것이라고 지정을 했습니다. print(even)을 하면 각 원소가 bool이 되는 것을 볼 수 있습니다. 이걸 그대로 x에 인덱스로써 적용을 하면 짝수만 가져오는 것을 볼 수 있습니다.

    그래서 파이썬의 list와 동일하게 작용하는 걸 볼 수 있습니다. 

     

    배열을 다르게 해도 list로써 출력됩니다.

    y = np.random.randint(1,100,size=(2,5))
    even = y%2==0
    print(y)
    print(even)
    print(y[even])

    분명 36은 다른 열에 있지만 다 무시하고 리스트로써 뽑아줍니다.

     

    AND OR NOT

    다음으로는 and or not을 써보겠습니다. 

    ndarray에서는 and,or,not 을 쓸 수가 없어서 기호로 씁니다.

    • AND - &
    • OR - | (shift+\)
    • NOT - !=
    x = np.random.randint(1,100,size=10)
    print(x)
    x[(x<20)|(x%2==0)]

    OR을 써보면 20보다 작거나 짝수인것만 가져오는 것을 볼 수 있습니다.

    AND 와 NOT도 같은 방식으로 쓸 수 있습니다.

    x = np.random.randint(1,100,size=10)
    print(x)
    x[(x<20)&(x%2 !=0)]


    간단하게 bool을 ndarray에서 어떻게 쓰는지 알아봤습니다.

     

    'Python > Numpy' 카테고리의 다른 글

    [Numpy] ndarray에 값 추가하기  (2) 2021.03.21
    ndarray 데이터로 그래프 그리기(matplotlib)  (2) 2020.06.05
    [Numpy] Broadcasting(브로드캐스팅)  (2) 2020.05.27
    axis(축) 이해  (2) 2020.05.25
    [Numpy] 연산,통계,집계함수  (2) 2020.05.21

    댓글

    Designed by JB FACTORY

    ....