본문 바로가기

머신러닝 공부

numpy(3)

SMALL

ndarray의 데이터 세트 선택하기 - 인덱싱(Indexing)

우리가 ndarray의 특정위치에서 데이터를 가져올 수 있는데 이런 방법을 통틀어서 인덱싱이라고 합니다.

인덱싱 유형 설명
특정 위치의 단일값 추출 원하는 위치의 인덱스 값을 지정하면 해당 위치의 데이터가 반환됩니다.
슬라이싱(Slicing) 슬라이싱은 연속된 인덱스상의 ndarray를 추출하는 방식입니다. ' : ' 기호 사이에 시작 인덱스와 종료 인덱스를 표시하면 시작 인덱스에서 종료 인덱스-1 위치에 있는 ndarray를 반환합니다.
팬시 인덱싱 (Fancy Indexing) 일정한 인덱싱 집합을리스트 또는 ndarray 형태로 지정해 해당 위치에 있는 ndarray를 반환합니다.
불린 인덱싱 (Boolean Indexing) 특정 조건에 해당하는지 여부인 True / False 값 인덱싱 집합을 기반으로 True에 해당하는 인덱스 위치에 있는 ndarray를 반환합니다.

 

단일 값 추출 

ndarray는 axis 기준으로 0부터 시작하는 위치 인덱스값을 가지고 있습니다. 해당 인덱스 값을 []에 명시하여 단일 값을 추출합니다. 마이너스가 인덱스로 사용되면 맨 뒤에서부터 위치를 지정합니다.

 

 

슬라이싱(Slicing)

슬라이싱은 ndarray에서 굉장히 자주쓰입니다. 슬라이싱은 : 을 이용하여 연속된 값을 선택합니다.

2차원배열에서도 다음과 같이 슬라이싱을 한 것을 볼 수 있습니다.

 

 

 

팬시 인덱싱

팬시 인덱싱도 앞선 슬라이싱처럼 여러개의 값을 뽑을 수 있습니다. 단, 슬라이싱은 연속된 인덱싱만 가능했습니다.

펜시 인덱싱은 리스트나 ndarray로 인덱스 집합을 지정하면 해당 위치의 인덱스에 해당하는 ndarray를 반환하는 인덱싱 방식입니다.

앞서 본 그림에서 array2d[ [0,1], 2]의 값은 (3, 6)이 됩니다.

또한 마지막에서 array2d[ [0,1] ]은 array2d[ [0,1], ]라고 보면 됩니다. (axis0만 존재하는 상태입니다.)

 

 

불린 인덱싱

앞서 본 인덱싱들과 조금 다릅니다. 앞선 인덱싱들은 위치 인덱스 값을 주었습니다.

불린 인덱싱은 조건 필터링과 추출을 동시에 할 수 있어 매우 자주 사용되는 인덱싱 방식입니다.

 

예를 들어 ndarray내의 값이 5보다 큰 ndarray를 추출하고자 한다면?

array1d = np.arange(start=1,stop=10)
target = []

for i in range(0,9):
	if array1d[i] > 5:
    	target.append(array1d[i])
        
array_selected = np.array(target)

위의 코드는 불린 인덱싱을 사용하지 않은 경우입니다. 보시다시피 코드도 길어지고 번잡한 일을하게 됩니다.

array1d = np.arange(start=0, stop=10)
array1d[array1d > 5]

다음은 불린 인덱싱을 사용한 코드입니다. 다음과 같이 대괄호 안에 조건식만 넣어주게 된다면 자동으로 불린 인덱싱을 하는 걸로 처리됩니다. 따라서 조건에 해당하는 인덱스를 true, false로 반환하여줍니다.

LIST

'머신러닝 공부' 카테고리의 다른 글

판다스(Pandas)와 기본 API (1)  (0) 2023.02.03
numpy ndarray의 sort & argsort  (0) 2023.02.01
numpy(2)  (0) 2023.02.01
NumPy (넘파이)  (0) 2023.02.01
주피터 노트북 그리고 넘파이/판다스(jupyter, numpy, pandas)  (0) 2023.01.31