라일락 꽃이 피는 날

[Numpy] 슬라이싱 (Slicing) 본문

데이터 분석/Python

[Numpy] 슬라이싱 (Slicing)

eunki 2021. 4. 22. 23:29
728x90

1. index 지정 색인

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[0]  # 0
arr[5]  # 5
arr[-1]  # 9
arr[-10]  # 0
arr2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

arr2d[0, 2]  # 3
arr2d[2, 1]  # 10

 

 

 

2. 범위 색인 (~이상~미만)

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[1:]  # array([1, 2, 3, 4, 5, 6, 7, 8, 9]) → index 1이상
arr[:5]  # array([0, 1, 2, 3, 4]) → index 5미만
arr[1:5]  # array([1, 2, 3, 4]) → index 1이상 5미만
arr[:-1]  # array([0, 1, 2, 3, 4, 5, 6, 7, 8]) → index –1미만
arr2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

arr2d[0, :]  # array([1, 2, 3, 4]) → 0행(row) 모두
arr2d[:, 2]  # array([3, 7, 11]) → 2열(column) 모두
arr2d[:2, :]  # array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr2d[:2, 2:]  # array([[3, 4], [7, 8]])

 

 

 

3. Fancy 인덱싱

범위가 아닌 특정 index의 집합 값을 선택하여 추출하고 싶을 때 활용한다.

추출할 index들을 반드시 꺾쇠괄호([ ])로 묶는다.

arr = np.array([10, 23, 2, 7, 90, 65, 32, 66, 70])
idx = [1, 3, 5]

arr[idx]  # array([23, 7, 65])
arr2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

arr2d[[0, 1], :]  # array([[1, 2, 3, 4], [5, 6, 7, 8]])
arr2d[:, [1, 2, 3]]  # array([[2, 3, 4], [6, 7, 8], [10, 11, 12]])

 

 

 

4. Boolean 인덱싱

조건 필터링을 통하여 Boolean 값을 이용한 색인이다.

Boolean 값이 들어있는 집합의 길이와 필터링할 배열의 크기가 같아야 한다.

arr = np.array([1, 2, 3, 4, 5, 6, 7])

myTrueFalse = [True, False, True]  # 불가능!!
myTrueFalse = [True, False, True, False, True, False, True]

arr[myTrueFalse]  # array([1, 3, 5, 7])

 

조건 연산자를 활용하여 조건 필터 생성이 가능하다.

arr2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

arr2d > 2
# array([[False, False, True, True], [True, True, True, True], [True, True, True, True]])

 

이렇게 생성한 조건 필터를 이용하여 인덱싱할 수 있다.

arr2d[ arr2d > 2 ]  # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
arr2d[ arr2d < 5 ]  # array([1, 2, 3, 4])
728x90

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

[Pandas] Series, DataFrame  (0) 2021.04.26
[Numpy] matrix (행렬)  (0) 2021.04.23
[Numpy] sort, argsort  (0) 2021.04.23
[Numpy] arange  (0) 2021.04.22
[Numpy] ndarray  (0) 2021.04.22