Indexing 데이터셋 선택
ndarray에 담긴 데이터 중 일부 데이터 세트나 특정 데이터만 추출하는 방법에 대해서 알아보겠습니다.
1. 슬라이싱(Slicing): 슬라이싱은 파이썬에서 리스트, 튜플, 문자열과 같은 순차적인 데이터에서 특정 부분을 선택하는 방법입니다.
시퀀스[start:stop:step]
start: 슬라이스의 시작 인덱스로, 이 인덱스에 해당하는 요소가 포함됩니다.
stop: 슬라이스의 끝 인덱스로, 이 인덱스에 해당하는 요소는 포함되지 않습니다.
step (선택적): 슬라이스에서 요소를 건너뛰는 간격을 나타냅니다.
< 예시1 >
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced_list = my_list[2:6]
print(sliced_list)
⇒[2, 3, 4, 5]
< 예시2 >
sliced_list_with_step = my_list[:8:2]
print(sliced_list_with_step)
⇒ [0, 2, 4, 6]
< 예시3 >
array1d = np.arange(1, 10)
array2d = array1d.reshape(3, 3)
print(array2d[0:2, 0:2])
⇒
[[1 2]
[4 5]]
print(array2d[1:3, 0:3])
⇒
[[4 5 6]
[7 8 9]]
print(array2d[1:3, :])
⇒
[[4 5 6]
[7 8 9]]
print(array2d[:, :])
⇒
[[1 2 3]
[4 5 6]
[7 8 9]]
print(array2d[:2, 1:])
⇒
[[2 3]
[5 6]]
print(array2d[:2,0])
⇒
[1 4]
2. 팬시 인덱싱(Fancy Indexing): 팬시 인덱싱(Fancy Indexing)은 NumPy에서 제공하는 고급 인덱싱 기법 중 하나로, 배열을 인덱싱하는데 배열이나 리스트와 같은 다른 배열을 사용하는 방법을 말합니다. 이를 통해 여러 개의 요소를 한 번에 선택하거나 원하는 순서로 배열의 요소를 추출할 수 있습니다.
array1d = np.arange(1, 10)
array2d = array1d.reshape(3, 3)
array3 = array2d[[0, 1], 2]
print(array3.tolist())
⇒ [3, 6]
array4 = array2d[[0, 1], 0:2]
print(array4.tolist())
⇒ [[1, 2], [4, 5]]
array5 = array2d[[0, 1]]
print(array5.tolist())
⇒ [[1, 2, 3], [4, 5, 6]]
3. 불린 인덱싱(boolean indexing): 불린 인덱싱(Boolean indexing)은 조건 필터링과 검색을 동시에 할 수 있기 때문에 매우 자주 사용되 는 인덱싱 방식입니다. 1차원 ndarray [1,2,3,4,5,6,7,8,9]에서 데이터값이 5보다 큰 데이터만 추출하 려면 어떻게 하면 될까요? 아마 for loop를 돌면서 값을 하나씩 if '추출값' 〉 5 비교를 통해서 해당하 는 데이터만 추출해야 할 것입니다. 불린 인덱싱을 이용하면 for loop/if else 문보다 훨씬 간단하게 이 를 구현할 수 있습니다. 불린 인덱싱은 ndarray의 인덱스를 지정하는 [] 내에 조건문을 그대로 기재하기만 하면 됩니다. 다음 예제에서 불린 인덱싱을 바로 적용해 보도록 하겠습니다.
array1d = np.arange(1, 10)
array3 = array1d[array1d > 5]
print(array3)
⇒ [6 7 8 9]
ndarray객채의 데이터셋에서 여러 방법으로 값을 추출하는 방법에 대해서 알아보았습니다.
감사합니다.
'머신러닝 Machine Learning' 카테고리의 다른 글
Reshape 차원과 크기 변경 (1) | 2023.12.15 |
---|---|
ndarray 데이터 타입 (0) | 2023.12.12 |
Numpy 넘파이 (0) | 2023.12.10 |