ndarray의 데이터 인덱싱의 종류를 알아보고 종류별 사용 방법에 대해서 알아보자.
1. 특정 위치의 단일값 추출 - [링크 클릭]
2. 슬라이싱 - [링크 클릭]
3. 팬시 인덱싱 - [링크 클릭]
4. Boolean 인덱싱
이번 시간은 4. Boolean 인덱싱을 사용해보도록 합니다. Boolean 인덱싱은 자주 사용하게 될겁니다.
밑에 예제를 따라해 보시면, 조건을 이용해서 Boolean 값을 반환해서 True인 값만 들어있는 array를 반환할 수 있다는 큰 장점이 있는 인덱싱입니다. (알고리즘 문제에서도 쉽게 문제해결 가능합니다.)
먼저, 아래와 같이 numpy를 임포트 해서 array1d라는 ndarray 하나를 생성해 줍니다.
소스 코드
import numpy as np
array1d = np.arange(start=1, stop=10)
4. Boolean 인덱싱
1) True, False로 구성된 Boolean 인덱싱
Boolean 인덱싱은 아래와 같이 ndarray에 바로 조건문을 사용하면, True와 Flase 값이 들어가있는 ndarray를 반환합니다.
소스 코드
print(array1d)
# 5보다 작은 값은 true로 ndarray 객체로 반환합니다.
ndarray1d = array1d < 5
print("ndarray1d:", ndarray1d)
print(type(ndarray1d))
결과
[1 2 3 4 5 6 7 8 9]
ndarray1d: [ True True True True False False False False False]
<class 'numpy.ndarray'>
2) Boolean ndarray을 [ ]에 대입
위에서 얻어진 [ True True True True False False False False False] ndarray를 ndarray에 대입해봅시다.
소스 코드
# []안에 불린 인덱싱을 넣게되면 True 인 값만 반환하는 ndarray 생성합니다.
ndarray1d2 = array1d[array1d < 5]
print("ndarray1d2:", ndarray1d2)
print(type(ndarray1d2))
결과
ndarray1d2: [1 2 3 4]
<class 'numpy.ndarray'>
3) Boolean List를 [ ]에 대입
지금까지는 Boolean으로 이루어진 ndarray를 [] 대괄호 안에 대입했습니다.
이번에는 bool값으로 이루어진 list를 ndarray 대괄호 안에 넣어보겠습니다.
소스 코드
# False, True 를 직접 입력해서 인덱싱 할 수 있습니다. (List도 사용 가능)
var = [False, True, False, False, False, True, True, False, True]
print(type(var)) # list도 사용가능, np.ndarray도 사용가능
ndarray1d3 = array1d[var]
print("ndarray1d3:", ndarray1d3)
print(type(ndarray1d3))
결과
<class 'list'>
ndarray1d3: [2 6 7 9]
<class 'numpy.ndarray'>
위 내용처럼 사용할 수 있습니다.
다른 언어에서는 for문을 돌아서 조건을 확인하고, 조건에 충족되면 append 하는 방식으로 진행 했다면, 이번 시간 이후부터는 Boolean 인덱싱을 이용해서 쉽게 새로운 list나 ndarray를 반환할 수 있습니다.
'머신러닝 > 넘파이' 카테고리의 다른 글
[Numpy] 행렬 내적, 전치행렬 - dot(), transpose() (1) | 2021.08.24 |
---|---|
[Numpy] sort 기본 종류 별 사용 방법 (0) | 2021.08.24 |
[Numpy] 리스트 ndarray 변환 함수 - tolist(), np.array() (0) | 2021.08.23 |
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(2) - 팬시 인덱싱 (0) | 2021.08.23 |
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(1) - 단일 값 추출, 슬라이싱 (0) | 2021.08.22 |