Numpy모듈에 대해

Numpy란? : Numerical Python“의 약자로 대규모 다차원 배열과 행렬 연산에 필요한 다양한 함수를 제공한고, 파이썬 기반 데이터 분석 환경에서 행렬 연산을 위한 핵심 라이브러리. (numpy를 np로 보통 축약해서 쓴다. = 사람들간의 약속)

Numpy를 사용하는 이유 :

1) 메모리 사이즈 : 메모리 버퍼에 배열 데이터를 저장하고 처리하는 효율적인 인터페이스를 제공한다.

2) 성능 : 파이썬 list 객체를 개선한 NumPy의 ndarray 객체를 통해 더 많은 데이터를 더 빠르게 처리할 수 있다.

3) 빌트인 함수 : 선형대수, 통계관련 여러 함수가 내장되어있다.

 

Numpy를 사용하기 전

배열이란? : NumPy 배열은 <아래 그림>과 같이 다차원 배열을 지원하고, 구조는 “Shape“(튜플 자료형)으로 표현된다.

ex ) 28X28 컬러 사진은 높이가 28, 폭이 28, 각 픽셀은 3개 채널(RGB)로 구성된 데이터 구조를 갖는다고 가정하자.     

결론부터 말하자면 컬러 사진 데이터는 Shape이 (28, 28, 3)인 3차원 배열이다. 다차원 배열은 입체적인 데이터 구조를 가지며, 데이터의 차원은 여러 갈래의 데이터 방향을 갖는다.

: 다차원 배열의 데이터 방향을 axis로 표현할 수 있습니다. 행방향(높이), 열방향(폭), 채널 방향은 각각 axis=0, axis=1 그리고 axis=2로 지정된다. NumPy 집계(Aggregation) 함수는 배열 데이터의 집계 방향을 지정하는 axis 옵션을 제공한다.

출처 : http://taewan.kim/post/numpy_cheat_sheet/


nd.array란? :

python list와 비슷한 개념이나, python list는 연속되지 않은 메모리, 명시적인 loop를 사용한다. 이에 반대로 ndarray는 c언어 기반으로 연속된 메모리 Vectorization 사용(한 번에 한 연산이 아니라 한 묶음으로 연산, 1~100까지 narray를 한 묶음으로 연산) 


ndarray 데이터 생성하기(numpy 모듈 함수)

기본 데이터 생성하기

- np.array( [값1, 값2, 값3] ) 의 형태로 데이터를 생성한다. list가 늘어날수록 차원이 늘어남

 

특정 값 지정후 생성하기

- np.ones -> 모든 값을 1로 생성 (좌측 이미지)

- np.zeros -> 모든 값을 0으로 생성 (좌측 이미지)

- np.empty -> 초기화된 값 생성 (우측 이미지)

- np.full -> 지정한 숫자로만 값을 채워서 생성 (우측 이미지)

- np.eye -> 단위행렬 생성 ex) np.eye(3)이면 3x3의 단위행렬이 생성됨 

 

범위 지정 후 생성하기

- np.arange(n) 를 쓰면 범위 지정후 생성가능하다 -> [0, 1, 2, 3, -, - , n-1]      # python의 range랑 비슷한 형식

- np.linespace 는 범위로 생성하나 특정 값을 주어, 그 값의 개수만큼 출력하게 한다. 간격은 등차수열


ndarray 랜덤으로 데이터 생성하기(random 서브 모듈 함수)

- np.random.rand 함수를 사용하면 0,1 사이의 실수값으로 랜덤한 데이터를 생성한다.

+ np.random.randn 함수는 정규분포 형태로 랜덤한 데이터를 생성한다.

 

범위를 주어 랜덤으로 생성하기

- np.random.randint 는 특정 정수 사이에서 랜덤하게 데이터를 가져온다. (size로 차원을 지정할 수 있음)

 

랜덤 값 고정, 중복제거, 분포형태로 가져오기

- np.random.seed 를 사용하면 값을 고정할 수 있다. (데이터를 랜덤으로 불러올 때마다 값이 다르므로, 데이터를 고정시킬 때, 쓰면 유용하다.)

- np.random.choice 는 주어진 배열에서 랜덤으로 값을 가져온다. (replace=True이면 중복허용, replace=False이면 중복불가로 값을 가져온다)

- np.random.uniform 은 확률분포형태로 랜덤값을 가져옴

- np.random.normal 은 정규분포형태로 랜덤값을 가져옴

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기