2. ndarray 인덱싱 & 슬라이싱 이해하기¶
1) 인덱싱이란 :¶
- 파이썬 리스트와 동일한 개념으로 사용되며
- , 를 사용하여 각 차원의 인덱스에 접근 가능
- ndarray에서 원하는 데이터세트를 선택하는데 매우 유용하게 사용된다.
2) 인덱싱 방법:
- 특정 위치의 단일값 추출
- 슬라이싱: 연속된 인덱스상의 ndarray의 값을 추출
- 팬시 인덱싱(Fancy Indexing): 연속적이진 않고, 비연속적인 여러 값을 가져올 수 있다. 즉, 일정한 인덱싱 집합을 리스트 또는 ndarray형태로 지정하여 그 위치에 있는 ndarray를 반환
- 불린 인덱싱(Boolean indexing): 특정 조건에 해당하는 여부로 True에 해당한는 인덱스 위치에 있는 ndarray를 반환(매우 유용!)
3) 코드 예시
1. 단일 값 추출 예시
1차원 벡터 인덱싱
In [2]:
import numpy as np
In [5]:
x = np.arange(10)
print(x)
In [6]:
x[2]
Out[6]:
In [7]:
x[-1] #마이너스가 인덱스로 사용되면 맨 뒤에서부터 위치를 지정한다.
#즉, x[-1]은 맨 뒤에서 첫번째 값, x[-2]는 맨 뒤에서 두번째 값을 추출 및 반환
Out[7]:
2차원 행렬 인덱싱¶
In [9]:
x = np.arange(10).reshape(2, 5)
print(x)
In [12]:
x[1, 0] #x[1][0]과 같은 표현으로, ','로 구분
Out[12]:
In [14]:
x = np.arange(36).reshape(3, 4, 3)
print(x)
In [19]:
x[0, 1, 2]
Out[19]:
2. 슬라이싱 예시
- 리스트, 문자열 slicing과 동일한 개념으로 사용
- 범위 지정은 :로 해주고 , 를 사용하여 각 차원 별로 슬라이싱 가능하다.
- x[:, 1:4] #[row 범위 , column 범위]
1차원 벡터 슬라이싱¶
In [20]:
x = np.random.randn(10)
print(x)
In [24]:
x[1:3] #실제 원본의 차원이 바뀌지는 않음.
Out[24]:
In [25]:
x = np.arange(10).reshape(2, 5)
print(x)
In [28]:
x[:, 1:4] #[row 범위 , column 범위]
Out[28]:
In [29]:
x[0, :2]
Out[29]:
3(다)차원 벡터 슬라이싱¶
In [33]:
x = np.arange(54).reshape(2, 9, 3)
print(x)
In [37]:
x[0, 0:2, :]
Out[37]:
In [ ]:
3. Boolean indexing으로 조건에 맞는 데이터 선택하기 예시 ★
Boolean indexing : ndarray인덱싱 시, bool리스트를 전달하여 True인 경우만 필터링 하는 경우에 사용된다.
이러한 방법은 조건 필터링과 검색을 동시에 할 수 있기 대문에 매우 자주 사용되는 인덱싱 방법이다.
In [1]:
import numpy as np
In [2]:
x = np.random.randint(1, 100, size = 10)
print(x)
1) 이제 x를 활용하여 짝수만 있는 boolean array로 만들어보자.¶
In [7]:
even_mask = x%2 == 0 #이것의 결과가 boolean list이다.
print(even_mask)
In [6]:
x[even_mask] #True인 것의 값만 추출됨. x[x%2==0] 로 한 번에 써 줄 수도 있다.
Out[6]:
2) 이제 30보다 큰 수만 추출¶
In [8]:
x[x>30]
Out[8]:
3) 다중조건 사용하기¶
- 파이썬 논리 연산자인 and, or, not 키워드 사용 불가
- 대신 &(AND), |(OR) 사용
- not같은 경우는 기호를 쓰는 것보다, 조건을 반대로 주면 된다.
In [10]:
x[(x%2==0) & (x<30)]
Out[10]:
In [11]:
x[(x<30) | (x>50)]
Out[11]:
'Data Science > Machine Learning' 카테고리의 다른 글
Evaluation2. 회귀의 성능 평가 지표(MAE, MSE, RMSE, R제곱) (0) | 2020.09.28 |
---|---|
Evaluation1 - 분류 모델 성능 지표 (Accuracy, Confusion Matrix, Precision, Recall, F1 score, ROC AUC ) (0) | 2020.09.28 |
Sklearn 익히기 - train/test data set 분리 및 Cross Validation (0) | 2020.09.28 |
1. numpy - numpy 모듈 & ndarray 이해 (0) | 2020.09.14 |
Machine Learning 마인드맵 (0) | 2020.04.30 |