[NumPy] Boolean indexing
20 Jan 2020 | NumPyBoolean indexing 으로 조건에 맞는 데이터 선택하기
ndarray 인덱싱 시, bool 리스트를 전달하여 True인 경우만 필터링.
앞서 작성한 글인 Broadcasting에서 % 나머지 연산과도 브로드캐스팅이 되는 것을 확인하였다.
![]()
이는 for문을 사용하지 않고 손쉽게 원하는 데이터를 필터링 할 수 있는 ndarray의 장점 중 하나이다.
list 의 경우 % 연산 브로드캐스팅을 지원하지 않는다.
![]()
다시 말해 위와 같은 boolean list를 뽑아내기 위해서는 for문을 돌며 일일이 비교를 해줘야한다.
얻은 bool 리스트를 인덱스로 전달하기
앞서 얻은 bool 리스트를 필터 역할을 하는 mask 로써 변수에 저장을 한 뒤
기존 배열에 넣어주면 True에 해당하는 인덱스 값들만 뽑아서 반환해준다.
![]()
이 때 mask를 mask 배열과 크기가 다른 배열의 인덱스로 주게 되면
차원이 일치하지 않는다며 에러가 뜬다.
![]()
하지만 대부분은 이렇게 mask라는 새로운 변수를 이용하지 않고
아래와 같이 배열 인덱스에 바로 조건을 넣어서 결과를 얻어낸다.
![]()
다중조건 사용하기
파이써 논리연산자인 and, or, not 키워드는 사용이 불가하다.
대신 아래의 문자로 대신한다.
& : AND
![]()
x 리스트에서 짝수이고 50보다 큰 수만을 얻어내고 싶다면…
![]()
또는 2의 배수이거나 3의 배수인 수만 얻고싶다.
![]()
괄호는 모호함을 없애기 위해서 필수!!!
위 내용은 fastcampus 강의 내용을 정리한 것입니다.
Comments