[머신러닝] Numpy 기본 사용법 총 정리
안녕하세요!! 공부하고 올린다는 게 생각보다 늦어졌네요.
사실 이게 크게 중요한 것 같진 않지만 공부한 김에 중요하다고 생각되는 것들만 간단하게 정리해 보았습니다!
Numpy는 머신러닝의 선형대수 라이브러리입니다.
0. 시작
Numpy를 쓸 때는 제일 윗줄에 아래의 명령어를 써줍니다.
1. 자료형
Numpy는 ndarray를 기본 Datatype으로 합니다!
ndarray는 행렬 자료구조 클래스로 리스트와 출력 형태가 동일합니다.
이를 생성하는 방법은 아래와 같습니다.
받을 변수=np.array(객체)
np.array의 인자로 ndarray로 변환을 원하는 객체를 주면 변환된 ndarray가 반환됩니다.
이는 아래와 같은 예제로 확인할 수 있습니다.
1.1 자료형 - 변경
다음으로 배열을 변경하고 확인하고 생성하는 기본 명령어를 정리해 봤습니다.
기능 | 명령어 |
자료형 변경 | 변수.astype('자료형') |
구조 변경 | 변수.reshape(행,열)로 변경 |
+구조를 변경할 때(reshape(행, 열)에서 (-1, a) 면 2.a로 변경하고 (a,-1)은 a,2로 변경해준다.
reshape를 쓸 때 중요한 점은 변수=reshape(a,b)에서 기존 요소의 개수와 a x b를 한 값이 같아야 한다는 것입니다.
1.2 자료형 - 확인
기능 | 명령어 |
자료형 확인 | 1) type(변수) 2) 변수.dtype |
구조 확인 | 변수.shape |
+참고로 type과 dtype의 차이는 dtype이 더 자세한 결과를 반환한다.
1.3 자료형 - 생성
기능 | 명령어 |
순차적 배열생성 | np.range(n) |
0으로 초기화된 배열 생성 | np.zeros((행,열),dtype='지정할 자료형') |
1로 초기화된 배열 생성 | np.ones((행,열)) |
참고로 인자로 주는 axis0/1은 행,열을 말합니다.
- axis0: 로우,행
- axis1: 칼럼, 열
1.4 자료형 - 정렬 관련
차이점 | 명령어 |
원본 그대로 + return 값 정렬 | np.sort(배열) |
원본 정렬 + return 값 X | 배열.sort() |
정렬된 행렬의 인덱스 반환 | np.argsort(배열) |
+디폴트는 오름차순으로 정리가 되고 내림차순으로 정리를 원할 시 np.sort(배열)[::-1]로 뒤에 [::-1] 옵션을 추가해주면 됩니다.
개인적인 생각으로 np.sort(배열)은 np에서 접근해서 일시적이고 배열. sort()은 직접적으로 접근해서 원본이 바뀌는 것이 아닌가 하는 생각이 듭니다.
그리고 argsort는 위 정렬했을 시의 인덱스를 반환합니다.
그래서 np.sort(배열)과 배열. sort()는 배열을 정렬하고 argsort 정렬된 배열의 인덱스를 반환합니다!
예를 들어 [3,5,1,7]이란 배열을 정렬하면 [1,3,5,7]이고 argsort는 순차적일 시의 인덱스 [1,2,0,3]을 반환합니다.
2.1 출력 - 인덱싱
먼저 인덱싱은 1차원은 기존에 알던 대로 인덱스로 배열의 값들을 출력하고 2차원은 콤마(,)로 행, 열을 좌표 찍듯이 출력할 수 있습니다.
- 1차원: 배열[인덱스]
- 2차원: 배열[행, 열]
예제는 아래와 같습니다.
2.2 출력 - 슬라이싱
슬라이싱은 범위를 지정해 주는 느낌입니다. 아래와 같은 배열의 뜻은 a+1번째에서 b번째까지 입니다.
배열[a:b]
2차원 배열에서는 a:b로 행을 지정하고 c:d로 열을 지정해서 이들의 교집합을 출력합니다!
- 1차원: 배열[행:열]
- 2차원: 배열[a:b , c:d]
예제는 아래와 같습니다.