Note
Numpy (넘파이) 본문
1. ndarray의 형태(shape)와 차원
ndarray : N 차원(Dimension) 배열(Array) 객체
ndarray 생성
라이브러리를 먼저 임포트한다. 넘파이를 사용하기 위한 라이브러리 호출한다.
np.array()를 사용해서 생성하고 인자는 주로 파이썬 list 또는 ndarray를 입력한다.
.shape는 형태를 알 수 있고, .ndim으로 차원을 확인할 수 있다.
2차원의 ndarray 모습으로, 평범한 2차원 데이터와 행이 1개만 있는 2차원 데이터 형태이다.
2. ndarray 데이터 값 타입
- ndarray 내의 데이터 값은 숫자, 문자열 등 모두 가능하다.
- ndarray 내의 데이터 타입은 그 연산의 특성상 같은 데이터 타입만 가능하다. 즉, 한 개의 객체에 int형과 float형이 함께 있을 수 없다.
- 데이터 타입은 .dtype으로 확인한다.
3. ndarray 타입(type) 변환
- . astype(변경을 원하는 타입)을 입력하면 타입을 변경할 수 있다. 위에서 사용한 것은 각각 float형과 int형으로 변환한 모습이다.
- 특히, 대용량 데이터를 다룰 시 메모리 절약을 위해서 형 변환을 고려해야 한다.
4. ndarray의 axis 축
ndarray는 axis0, axis1, axis2 단위로 부여된다.
위 코드처럼 axis를 활용해서 간단한 연산을 할 수 있다.
5. ndarray를 편리하게 생성하기 - arange, zeros, ones
위와 같은 메소드는 특정 크기와 차원을 가진 ndarray를 연속 값이나 0 또는 1로 초기화 생성해야 할 경우에 이용한다. 주로 테스트용으로 데이터를 만들거나 대규모의 데이터를 일괄적으로 초기화해야 할 경우 사용한다.
6. ndarray의 shape를 변경하는 reshape() - 중요한 개념
기존 array1을 reshape()를 사용해서 형태를 바꾼 모습이다.
10개의 데이터를 가지고 변환할 수 없는 shape 구조를 입력하면 이처럼 오류가 발생한다.
-1 인자를 입력하면 다른 옵션에 자동적으로 맞춰주는 역할을 한다.
각각 1차원을 2차원으로, 2차원을 1차원으로 변환한 모습들이다.
-1을 사용해도 변환할 수 없는 형태이면 오류가 발생하고, -1 인자는 하나만 가질 수 있다.
7. ndarray 인덱싱
- 특정 위치의 단일 값 추출 - 원하는 위치의 인덱스 값을 지정하면 해당 위치의 데이터가 반환된다.
- 슬라이싱
- 펜시 인덱싱 - 일정한 인덱싱 집합을 리스트 또는 ndarray 형태로 지정해 해당 위치에 있는 ndarray를 반환한다.
- 불린 인덱싱
8. sort() 와 argsort()
np.sort( )로 정렬 : 객체 자체(org_array)는 변경되지 않음, 원본 데이터는 유지.
ndarray.sort( )로 정렬 : 객체 자체(org_array)를 변경하고, org_array.sort( ) 이렇게만 사용해도 된다.
np.sort를 사용해서 내림차순 정렬도 가능하다.
np.sort를 사용해서 2차원 행렬도 정렬할 수 있다. axis = 옵션을 사용해서 컬럼과 로우 기준을 선택할 수 있다.
argsort()는 원본 행렬 정렬시 정렬된 행렬의 원래 인덱스를 필요로 할 때 사용한다. 이 함수는 인덱스 기준으로 정렬하고 인덱스를 ndarray 형으로 반환한다.
예제 : key-value 형태의 데이터 John=78, Mike=95, Sarah=84, Kate=98, Samuel=88를
ndarray로 만들고 argsort()를 이용하여 key값을 정렬하여라.
score_array의 정렬된 값에 해당하는 원본 행렬 위치 인덱스 반환하고 이를 이용하여 name_array에서 name값 추출.
행렬 정렬시 원본 행렬의 인덱스는 sort_indices를 사용한다. 이는 추천 시스템 유사도를 계산할 때 활용한다.
9. 선형대수 연산 - 행렬 내적과 전치 행렬 구하기
np.dot을 사용해서 행렬 내적을 한다. A는 2X3 B는 3X2 이는 행렬 계산에 의하면 2X3=3X2 => 2X2 행렬이 된다.
transpose()를 사용해서 전치행렬을 구할 수 있다. 전치행렬은 행과 열이 바뀐 행렬을 말한다.
'Machine Learning' 카테고리의 다른 글
교차 검증 (0) | 2021.05.07 |
---|---|
학습 / 테스트 데이터 (0) | 2021.05.06 |
파이썬과 머신 러닝 (0) | 2021.05.05 |
pandas다루기_보스톤마라톤(캐글 데이터) (0) | 2021.04.28 |
4. 엑셀을 다루는 판다스 (0) | 2021.04.28 |