넘파이에서 ndarray 내의 일부 데이터 세트나 특정 데이터만을 선택할 수 있도록 하는 인덱싱에 대해 알아보자
1. 특정 데이터만 추출 : 원하는 위치의 인덱스 값을 지정하면 해당 위치의 데이터 반환됨
array1 = np.arange(10) # [ 0 1 2 3 4 5 6 7 8 9 ]
print(array1[2]) # 2
print(array1[-1]) # 9
array1[0] = 10
print(array1) # [ 10 1 2 3 4 5 6 7 8 9 ]
- 인덱스값을 [] 괄호 안 인덱스로 접근 할 수 있다. 그리고 파이썬과 같이 - 가 되면 뒷쪽부터 접근하게 된다.
- 특정 인덱스의 값을 변경하고 싶을 시 ndarray[index] = 값 을 통해 변경 가능
2. 슬라이싱(Slicing) : 슬라이싱은 연속된 인덱스상의 ndarray를 추출하는 방식. ':' 기호 사이에 시작 인덱스와 종료 인덱스를 표시하면 시작인덱스에서 종료인덱스-1 위치에 있는 데이터의 ndarray를 반환합니다. 예를 들어 1:5라고 하면 시작 인덱스 1과 종료 인덱스 4까지에 해당하는 ndarray를 반환함
array1 = np.arange(start=1, stop=10) # [1 2 3 4 5 6 7 8 9 ]
print(array1[0:3])
print(array1[:3])
print(array1[3:])
print(array2[:])
- start와 stop을 통해서 1 ~ 9까지 값을 가진 ndarray를 가진 array1
- 결과값
첫번째 print 문 [0:3] -> index: 0 1 2 | [1 2 3] |
두번째 print 문 [:3] -> index: 0 1 2 | [1 2 3] |
세번째 print 문 [3:] -> index: 3 4 5 6 7 8 | [4 5 6 7 8 9] |
네번째 print 문 [:] -> index: 0 1 2 3 4 5 6 7 8 | [1 2 3 4 5 6 7 8 9] |
* 첫번째와 두번째는 같은 결과를 나타낸다.
* 다음은 2차원 배열에서 접근 방법을 나타낸다
3. 팬시 인덱스(Fancy indexing) : 일정한 인덱싱 집합을 리스트 또는 ndarray 형태로 지정해 해당 위치에 있는 데이터의 ndarray를 반환함
array1d = np.arange(start=1,stop=10).reshape(3,3)
print(array1d[[0,1],2].tolist())
print(array1d[[0,1],0:2].tolist())
print(array1d[[0,1]].tolist())
- array1d => [[1 2 3] [4 5 6] [7 8 9]]
- 결과값
[3 6] => 0행과 1행 + 2열
[[ 1 2 ] [4 5]] => 0행과 1행 + 0열 ~ 1열
[[ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ]] => 0행과 1행 + 모든 열
4. 불린 인덱싱(Boolean indexing) : 특정 조건에 해당하는지 여부인 True/False 값 인덱싱 집합을 기반을 기반으로 True에 해당하는 인덱스 위치에 있는 데이터의 ndarray를 반화함
array1d = np.arange(3) # 0 1 2
array1d > 1 # false false true
print(array1d[array1d > 1]) # [2]
- 조건에 만족하는 것을 확인하기 위해 사용하며, ndarray[ndarray에 비교할 조건식]으로 사용
'머신러닝 in Python' 카테고리의 다른 글
판다스(Pandas) 데이터프레임 활용 (0) | 2019.08.08 |
---|---|
판다스(Pandas) 기초 + 타이타닉 데이터 (0) | 2019.08.08 |
넘파이(NumPy) 정렬 (0) | 2019.08.07 |
넘파이(NumPy) ndarray (0) | 2019.08.07 |
넘파이(NumPy) 기초 + np.array() (0) | 2019.08.07 |