Numpy 기초 1편

1. numpy

 

고성능 과학 계산용 패키지

 

matrix나 vector같은 array 연산의 사실상 표준

 

일반 리스트에 비해 빠르고 효율적

 

반복문 없이 배열 연산 처리를 지원

 

c,c++ 등 다른 언어와 통합 가능

 

import numpy as np

 

 

2. array에 대하여

 

행렬은 일반적으로 이차원 list를 이용하여 표현한다.

 

예를 들어 [[2,1],[3,2],[3,-1]]은 $$\begin{pmatrix}
2 & 1\\ 
3 & 2\\ 
3 & -1
\end{pmatrix}$$을 표현한다.

 

그러나 이렇게 하는 경우 다양한 행렬 계산이 어려워진다.

 

심지어 매우 큰 matrix에 대해 일일이 list로 표현해줄 것인가?

 

리스트는 심지어 메모리도 비효율적이다. 각각의 값이 모두 메모리 주소를 가지기 때문

 

 

3. array의 생성과 특징

 

np.array( <list>,dtype)로 ndarray라는 객체 생성

 

리스트와는 다르게 하나의 데이터 타입만 들어감

 

<list>의 모든 원소가 dtype의 데이터 타입을 가지게 됨

 

그림1. 1,4,5,8 int형이 float형으로 모두 바뀜

 

모두 int형인 원소가 모두 float로 바뀐 모습

 

그림2. 모든 원소가 하나의 float로 바뀐 모습

 

문자형과 int 원소가 float로 바뀐 모습

 

리스트처럼 indexing도 가능함

 

list와는 다른 방식으로 데이터를 저장한다

 

그림3. 리스트와 numpy의 저장방식

 

numpy는 데이터가 차례대로 공간에 바로 투입되어 접근성이 좋고 효율적

 

list는 주소를 1차적으로 할당하고 주소가 가리키는 곳에 2차적으로 값을 할당함

 

그림4. 리스트와 numpy array의 차이

 

파이썬에서 1은 고정된 메모리 주소를 가지니까 두 리스트의 1이 가리키는 메모리 주소는 동일함

 

그러나 array는 자신만의 공간에 할당하므로 1이 가리키는 메모리 주소가 다름

 

 

4. shape

 

shape는 array의 크기나 형태를 나타낸다 , tuple형태로 반환함

 

그림5. numpy arrary의 shape 모습

 

(4,) array와 (3,4) array를 나타냈다

 

(4,)의 한 축 4는 (3,4)에서 한칸 뒤로 밀려 (3,4)로 되면서 새로운 축 3이 생김

 

rank가 커질수록 이전 rank의 shape 축들이 한 칸씩 밀려나간다

 

그림6. 3차원 tensor의 shape

 

5. rank

 

array는 rank를 가진다 np.array().ndim으로 구한다

 

그림7. numpy array의 rank에 따른 이름

 

그림8. ndim으로 rank를 구한 모습

 

6. size

 

size는 array 내 데이터의 총 수로 shape 축을 전부 곱하면 된다

 

그림9. numpy array의 size를 구한 모습

 

7. dtype, nbytes

 

dtype은 array의 각 원소가 가지는 타입

 

데이터 타입마다 차지하는 공간의 크기가 다르다

 

nbytes는 array의 메모리 공간 크기를 구한다

 

메모리 공간 크기가 작다고해서 무조건 좋은 것은 아니다…

 

표현방식이 적절하냐가 일단 중요하니까

 

그림10/. 데이터타입에 따른 nbyte 차이

 

메모리 공간이 데이터 타입마다 다 다르다는 것을 확인할 수 있다

 

dtype에는 int8로 지정하면 에러가 나고 np.int8로 np.을 붙여줘야함

 

 

'프로그래밍 > Numpy' 카테고리의 다른 글

Numpy 기초 6편  (0) 2021.11.30
Numpy 기초 5편  (0) 2021.11.29
Numpy 기초 4편  (0) 2021.11.29
Numpy 기초 3편  (0) 2021.11.28
Numpy 기초 2편  (0) 2021.11.27
TAGS.

Comments