Day_3 01. numpy
작성일
numpy
1. numpy over view
- Numerical Python
- 파이썬의 고성능 과학 계산용 패키지
- Matrix와 Vector와 같은 Array 연산의 사실상의 표준
- 한글로 넘파이로 주로 통칭
- 누군가는 넘피/늄파이라고 부르기도 함
1.1 numpy의 특징
- 일반 List에 비해 빠르고, 메모리 효율적
- 반복문 없이 데이터 배열에 대한 처리르 지원함 -> 엄청 중요한 특징
- 선형대수와 관련된 다양한 기능을 제공함
- C, C++, 포트란 등의 언어와 통합 가능
1.2 numpy install
conda install numpy
1.3 numpy 호출 방법
import numpy as np
- 일반적으로 numpy는 np라는 alias(별칭) 이용해서 호출함
- 특별한 이유는 없음, 세계적인 약속 같은 것
2. ndarray
2.1 array creation
- numpy는 np.array 함수를 활용해 배열을 생성
- ndarray
- numpy는 하나의 데이터 type만 배열에 넣을 수 있음
- List와 가장 큰 차이점 -> dynamic typing not supported
- C의 Array를 사용하여 배열을 생성
test_array = np.array([1, 2, 3, 4], dtype=float)
- shape : numpy array의 dimension 구성을 반환
- array의 크기, 형태 등에 대한 정보
- dtype : numpy array의 데이터 type을 반환
- ndarray의 single element가 가지는 data type
- 각 element가 차지하는 memory의 크기가 결정됨
- array의 RANK에 따라 불리는 이름이 다름
- Rank 0 : scalar
- Rank 1 : vector
- Rank 2 : matrix
- Rank 3 : 3-tensor
- Rank n : n-tensor
- nbytes
- ndarray object의 메모리 크기를 반환함
- 32bits -> 4bytes
- 64bits -> 8bytes
3. Handling shape
3.1 reshape
- Array의 shape의 크기를 변경함, element의 갯수는 동일
- -1 : size를 기반으로 row/column 개수 선정
3.2 flatten
- 다차원 array를 1차원 array로 변환
3.3 indexing
- list와 달리 이차원 배열에서 [0, 0] 표기법을 제공
- matrix 일 경우 앞은 row 뒤는 column을 의미
3.4 slicing
- list와 달리 행과 열 부분을 나눠서 slicing이 가능
- matrix의 부분 집합을 추출할 때 유용
4. creation function
4.1 arange
- array의 범위를 지정하여, 값의 list를 생성하는 명령어
- np.arange(시작, 끝, step)
- step 에 float 값도 가능
4.2 ones
- 0으로 가득찬 ndarray 생성
- np.zeros(shape, dtype, order)
4.3 zeros
- 1로 가득찬 ndarray 생성
- np.ones(shape, dtype, order)
4.4 empty
- shape만 주어지고 비어있는 ndarray 생성
- memory initialization이 되지 않음
- np.empty(shape, dtype)
4.5 something_like
- 기존 ndarray의 shape 크기 만큼 1, 0 또는 empty array를 반환
- zeros_like
- ones_like
- empty_like
4.6 identity
- 단위 행렬(i 행렬)을 생성
4.7 됻
- 대각선이 1인 행렬, k 값의 시작 index의 변경이 가능
- 단위행렬과 다름
4.8 diag
- 대각 행렬의 값을 추출
4.9 random sampling
- 데이터 분포에 따른 sampling으로 array를 생성
5. operation functions
- axis
- 모든 operation function을 실행할 때 기준이 되는 dimension 축
- sum
- ndarray의 element들 간의 합을 구함, list의 sum 기능과 동일
- mean
- std
- var
- 등
6. mathematical functions
- 다양한 수학 연산자를 제공
- exp
- log
- sin
- cos
- sinh
- tanh
- 등
7. concatenate
- numpy array를 합치는(붙이는) 함수
- vstack
- hstack
- concatenate
- newaxis : 축 하나 추가
8. array operation
- numpy는 array간의 기본적인 사칙 연산을 지원
8.1 element-wise operation
- array간 shape이 같을 때 일어나는 연산
8.2 Dot product
- Matrix의 기본 연산,
- array간 shape이 같을 때 일어나는 연산, dot 함수 사용
8.3 trnaspose
- transpose 또는 T attribute 사용
8.4 broadcasting
- shape이 다른 배열 간 연산을 지원하는 기능
- scalar - vector 외에도 vector - matrix 간의 연산도 지원
9. numpy performance
- timeit
- jupyter 환경에서 코드의 퍼포먼스를 체크하는 함수
- 일반적으로 속도는 아래 순
- for loop < list comprehension < numpy
- 100,000,000 번의 looop이 돌 때, 약 4배 이상의 성능 차이를 보임
- Numpy는 C로 구현되어 있어, 성능을 확보하는 대신 파이썬의 가장 큰 특징인 dynamic typing을 포기
- 대용량 계산에서 가장 흔히 사용
- Concatenate처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없음
10. comparison
10.1 All & Any
- array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
- any : 하나라도 조건에 만족하면 True
- all : 모두가 조건에 만족하면 True
10.2 배열의 비교
- numpy는 배열의 크기가 동일 할 때 element간 비교의 결과를 Boolean type으로 반환
10.3 np.where
- np.where(조건, 참일 때 값, 거짓일 때 값)
- np.where(조건) : index값 반환
10.4 np.isnan
- boolean 값
- Not a Number : NaN, Inf 판단
10.5 np.isfinite
- boolean 값
- 유한한 수 인지 판단
10.6 argmax & argmin
- array내 최대값 또는 최소값의 index를 반환
- axis 기반해 반환
11. boolean & fancy index
11.1 boolean index
- 특정 조건에 따른 값을 배열 형태로 추출
- Comparison opeartion 함수들도 모두 사용가능
- shape이 같아야함
- Comparison opeartion 함수들도 모두 사용가능
11.2 fancy index
- numpy는 array를 index value로 사용해서 값 추출
- take() : 같은 효과
- 반드시 integer로 선언
- shape이 같을 필요 없음
- matrix 형태의 데이터도 가능
12. numpy data i/o
12.1 loadtxt & savetxt
- text type의 데이터를 읽고, 저장하는 기능
- save : pickle
댓글남기기