NumPy란? #
파이썬 언어를 위한 선형대수용 행렬, 벡터 수학 계산을 위한 자료구조와 계산 함수를 제공하는 라이브러리이다. C, Fortran으로 작성된 함수를 파이썬으로 연동하여 쓸 수 있도록 구성되어 있다. 기본적으로 array라는 자료구조를 제공한다. 보통 과학용 일반 함수 목록을 제공하는 SciPy, 차트용 라이브러리인 Matplotlib, 고수준 DataFrame 제공 모듈인 pandas와 함께 사용된다.
파이썬 프로그램이 일반적으로 C에 비해 느린 이유는 for 루프 때문인데, NumPy의 벡터 연산을 이용하면 for 루프 없이 빠르게 동작하는 코드를 작성할 수 있다.
제공하는 선형대수 계산 함수는 다음과 같다.
- diag: diagonal elements
- dot: matrix multiplication
- trace: sum of the diagonal elements
- det: matrix determinant
- eig: eigenvalues and eigenvectors
- inv: Invertible matrix
- pinv: Moore–Penrose pseudoinverse
- qr: QR decomposition
- svd: Singular value decomposition
- solve: solve the linear system
- listsq: least-squares solution
배열(ndarray) #
일반적인 다차원 데이터를 저장할 경우 사용한다. 파이썬 일반 데이터형인 리스트, 튜플은 다양한 데이터 형을 배열로 담을 수 있지만, ndarray는 하나의 데이터형만을 저장할 수 있다. ndarray를 사용하는 이유는 다음과 같다.
- ndarray는 NumPy에서 지원하는 표준형 벡터/행렬/텐서를 저장한다.
- 많은 NumPy 함수가 matrix가 아닌 ndarray를 반환한다.
- 요소간 연산과 선형대수 연산에 대해 명확히 구분되어 있다.
행렬곱을 수행할 때는 .dot 메쏘드를 써야 한다. 반면 matrix의 경우 그냥 '*'이 행렬곱을 의미한다.
행렬(matrix) #
행렬연산을 위해 고안된 범용 2차원 배열이다. ndarray와의 차이점은 다음과 같다.
- 연산자 *, dot(), multiply()
- 벡터와 1차 배열
- ndarray는 다차원이지만 matrix는 2차원이다.