파이썬에서 과학적 계산을 하기 위한 기초 패키지입니다. Array 객체를 이용해 벡터, 행렬, 텐서 등을 손쉽게 표현할 수 있습니다. 또한, 임의값 생성, 선형대수, 푸리에 변환 등 필수 연산을 제공합니다. 그리고, C코드로 구현되어 매운 빠른 연산 속도를 보장합니다. 또한, 많은 연구자들이 익숙한 MATLAB의 기본 문법과 행렬 연산을 대체할 수 있습니다.
Numpy의 기능
- array클래스를 기본으로 다양한 계산 기능을 제공합니다. 벡터, 행렬 외에도 array를 생성 및 활용 가능합니다. 또한, 파이썬의 리스트와 달리 자료형을 제한하는 대신 연산 효율을 향상시킵니다. C 언어로 작성된 코드와 인터페이스하기 위한 구조화 자료형입니다. array의 직관적 인덱싱과 슬라이싱이 가능합니다.
앞서 다양한 수학 연산 모듈을 제공한다고 했는데요. 다음과 같습니다. 고속 푸리에 변환(numpy.fft), 랜덤 샘플링(numpy.random), 선형대수(numpy.linalg), 행렬(numpy.matlib) 등을 사용할 수 있습니다.
Numpy 와 Matlab
앞서 Numpy는 Matlab을 대신할 수 있다고 했습니다. 그만큼 사용하는 기능과 인터페이스과 비슷한 것인데요. 다만, 메모리 사용방법은 조금 다릅니다. Matlab은 슬라이싱을 통해 새로운 변수에 데이터를 저장할 때, 다른 메모리 주소에 저장을 합니다. Numpy는 주소값을 저장하기에 슬라이싱을 통해 복사된 데이터는 같은 메모리 공간에 저장되는 것입니다.
Array 객체
Numpy 패키지에서 값을 다루기 위해 사용하는 객체가 바로 array 객체입니다. python에 list가 있다면, numpy에는 array가 있다고 생각하시면 편할 것 같습니다. 동일한 자료형의 개체들로 구성된 모임입니다. n차워 array를 표현하며, 다양한 방법으로 생성가능합니다. array 객체에서 특정 객체에 접근할 경우, 파이썬 객체로 변환합니다. 슬라이싱과 인덱싱을 통한 자유로운 개체 접근을 지원합니다. 다양한 자료형을 지원하기 위해 dtype 객체를 사용합니다.
import numpy as np
python_list = [1,2,3,4]
print(python_list)
x = np.asarray(python_list,dtype=np.float32)
print(x)
x = np.asarray([[1,2],[3,4]], dtype = np.float32) # 행 단위로 메모리 저장
print(x)
x = np.asfortranarray([[1,2],[3,4]],dtype=np.float32) # 열 단위로 메모리 저장
print(x)
print(x.flags)
print(np.zeros(10))
print(np.zeros((10,10)))
print(np.zeros((5,5,5)))
print(np.zeros((5,5,5)).shape)
print(np.ones((5,5)))
print(np.zeros_like(x))
print(np.zeros(x))
print(np.idetify(5))
print(np.eye(5,10))
print(np.ones(5)*3)
print(np.full((5,10),3,dtype=np.float32))
print(np.full_like(x,5))
print(list(range(10)))
print(np.arrange(10))
print(list(range(1,10)))
print(list(range(1,10,2)))
print(np.arrange(1,10))
print(np.arrange(1,10,2))
print(np.arrange(1.5,2.4,0.91))
print(np.linspace(0.0,10.0,100)) # 사이를 몇개로 쪼갤 것인가, 마지막 값 포함
print(np.linspace(0.0,10.0,100, endpoint=False))
print(np.logscale(0.0,10.0,100))
print(np.random.rand(5)) # 1 dimension 0~ 1 사이 5개 랜덤
print(np.random.rand(5,5))
print(np.random.randint(10)) # 0 ~ n-1 integer
print(np.random.randint(-5,5)) # 음수도 가능
print(np.random.randn(5)) # 평균 = 0 , std = 1 표준 정규분포를 따르는 랜덤 수
'데이터 분석' 카테고리의 다른 글
Pandas 패키지 (0) | 2022.08.12 |
---|---|
array의 저장 / 불러오기 (0) | 2022.08.11 |
Array의 연산 (0) | 2022.08.11 |
Array 인덱싱과 슬라이싱 (0) | 2022.08.10 |
데이터 분석이란 (0) | 2022.08.09 |
댓글