본문으로 바로가기

[Numpy] Boolean indexing

category AI/데이터분석 2020. 1. 20. 23:53
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

Boolean indexing 으로 조건에 맞는 데이터 선택하기

 

ndarray 인덱싱 시, bool 리스트를 전달하여 True인 경우만 필터링.

 

앞서 작성한 글인 Broadcasting에서 % 나머지 연산과도 브로드캐스팅이 되는 것을 확인하였다.

 

이는 for문을 사용하지 않고 손쉽게 원하는 데이터를 필터링 할 수 있는 ndarray의 장점 중 하나이다.

list 의 경우 % 연산 브로드캐스팅을 지원하지 않는다.

다시 말해 위와 같은 boolean list를 뽑아내기 위해서는 for문을 돌며 일일이 비교를 해줘야한다.

 

 

 


얻은 bool 리스트를 인덱스로 전달하기

앞서 얻은 bool 리스트를 필터 역할을 하는 mask 로써 변수에 저장을 한 뒤

기존 배열에 넣어주면 True에 해당하는 인덱스 값들만 뽑아서 반환해준다.

 

 

 

이 때 mask를 mask 배열과 크기가 다른 배열의 인덱스로 주게 되면

차원이 일치하지 않는다며 에러가 뜬다.

 

 

하지만 대부분은 이렇게 mask라는 새로운 변수를 이용하지 않고

아래와 같이 배열 인덱스에 바로 조건을 넣어서 결과를 얻어낸다.

 

 

 


다중조건 사용하기

파이써 논리연산자인 and, or, not 키워드는 사용이 불가하다.

대신 아래의 문자로 대신한다.

& : AND

| : OR

 

 

x 리스트에서 짝수이고 50보다 큰 수만을 얻어내고 싶다면...

 

또는 2의 배수이거나 3의 배수인 수만 얻고싶다.

 

 

괄호는 모호함을 없애기 위해서 필수!!!

 

 

 

 

위 내용은 fastcampus 강의 내용을 정리한 것입니다.

'AI > 데이터분석' 카테고리의 다른 글

[matplotlib] 그래프 그리기  (0) 2020.01.22
[Numpy] linalg 서브모듈 선형대수 연산  (0) 2020.01.22
[Numpy] broadcasting 이해 및 활용하기  (0) 2020.01.20
[Numpy] axis(축) 이해  (0) 2020.01.19
[Numpy] ndarray 기본 함수  (0) 2020.01.19