대학원 일기

Numerical Python - Numpy 본문

AI/인공지능 기초

Numerical Python - Numpy

대학원생(노예) 2022. 1. 25. 02:12

방정식 같은 데이터 처리에서 파이썬은 처리 속도가 느린 것을 그나마 해결하기 위해 파이썬 과학 처리 패키지인 Numpy를 쓴다.

 

Numpy

- Numerical Python

- 파이썬의 고성능 과학 계산용 패키지

- Matrix와 Vector와 같은 Array 연산의 사실상의 표준

 

Numpy 특징

- 일반 List에 비해 빠르고, 메모리 효율적

- 반복문 없이 데이터 배열에 대한 처리를 지원함

- 선형대수와 관련된 다양한 기능을 제공함

- C, C++, 포트란 등의 언어와 통합 가능

 

ndarray

Array creation

- numpy는 np.array 함수를 활용하여 배열을 생성함 → ndarray

- numpy는 하나의 데이터 type만 배열에 넣을 수 있음

- List와 가장 큰 차이점, Dynamoc typing not supported

- C의 Array를 사용하여 배열을 생성함

 

파이썬의 메모리 처리

- 출력 결과처럼 a와 b는 같은 메모리 공간을 공유한다.

- python의 list는 reference 주소를 저장하므로 같은 공간을 공유하게 된다.

a와 b가 같은 메모리 공간을 사용하지 않게 하려면?

- import copy 모듈의 deepcopy()를 사용한다.

 

numpy로 메모리 저장

- shape : numpy array의 object의 dimension 구성을 반환함

- dtype : nupy array의 데이터 type을 반환함

 

Array Shape

  Array(vector, matrix, tensor)의 크기, 형태 등에 대한 정보

 

- vector

- matrix

- 3rd order tensor

 

Array shape - ndim & size

- ndim(number of dimension)

- size: data의 개수

 

Array dtype 

- Ndarray의 single element가 가지는 data type

- 각 element가 차지하는 memory의 크기가 결정됨

- nbytes: ndarray object의 메모리 크기를 반환함

 

Handling shape

reshape 

- Array의 shape의 크기를 변경함 (element의 갯수는 동일)

2차원 -> vector

- Array의 size만 같다면 다차원으로 자유롭게 변형 가능함

 

flatten

- 다차원 array를 1차원 array로 변환

 

Indexing & Slicing

indexing

- List와 달리 이차원 배열에서 [0 ,0]과 같은 표기법을 제공함

- Matrix일 경우, 앞은 row 뒤는 column을 의미함

 

Slicing

- List와 달리 행과 열 부분을 나눠서 slicing이 가능함

- Matrix의 부분 집합을 추출할 때 유용함

- 원하는 부분만 가져올 수 있음

 

creation function

arange

- array의 범위를 지정하여, 값의 list를 생성하는 명령어

 

ones, zeros and empty

- zero(0)으로 가득찬 ndarray 생성

- one(1)로 가득찬 ndarrary 생성

- empty: shape만 주어지고 비어있는 ndarray 생성 (memory initialization이 되지 않음)

 

something_like

- 기존 ndarray의 shape 크기 만큼 1, 0 또는 empty array를 반환

 

identity

- 단위 행렬(i 행렬)을 생성함

 

eye

- 대각선이 1인 행렬, k값의 시작 index의 변경이 가능

 

diag

- 대각 행렬의 값을 추출함

 

random sampling

- 데이터 분포에 따른 ampling으로 array를 생성

균등 분포, 정규 분포

 

operation functions

sum

- ndarray의 element들 간의 합을 구함, list의 sum 기능과 동일

 

axis

- 모든 operation function을 실행할 때, 기준이 되는 dimension 축

 

mean & std

- ndarray의 element들 간의 평균 또는 표준 편차를 반환

 

concatenate

- Numpy array를 합치는 함수

array operations

Operations b/t arrays

- Numpy는 array간의 기본적인 사칙 연산을 지원함

 

Element-wise operations

- Array간 shape이 같을 때 일어나는 연산

 

Dot product

- Matrix의 기본 연산

- dot 함수 사용

 

transpose(전치 행렬)

- transpose 또는 T attribute 사용

 

broadcasting

- Shape이 다른 배열 간 연산을 지원하는 기능

- (Scalar–vector) 외에도 (vector–matrix) 간의 연산도 지원

 

comparisons

All & Any(중요)

- Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환

 

Comparison operation #1

- Numpy는 배열의 크기가 동일 할 때 element간 비교의 결과를 Boolean type으로 반환하여 돌려줌

 

Comparison operation #2

 

np.where

- index 값을 반환할 때 자주 사용

 

argmax & argmin

a

- array내 최대값 또는 최소값의 index를 반환함

- axis 기반의 반환

boolean & fancy index

boolean index

- numpy는 배열은 특정 조건에 따른 값을 배열 형태로 추출 할 수 있음

- Comparison operation 함수들도 모두 사용가능

 

fancy index

- numpy는 array를 index value로 사용해서 값을 추출하는 방법

- Matrix 형태의 데이터도 가능

 

numpy data i/o

loadtxt & savetxt

- Text type의 데이터를 읽고, 저장하는 기능

 

numpy object - npy

- Numpy object (pickle) 형태로 데이터를 저장하고 불러옴

- Binary 파일 형태로 저장함

'AI > 인공지능 기초' 카테고리의 다른 글

행렬(Matrix)  (0) 2022.01.26
벡터(Vector)  (0) 2022.01.26
[DL] Deep Learning, Historical Review  (0) 2022.01.07
기계 학습(Machine Learning)  (0) 2022.01.02
인공지능(Artificial Intelligence)의 분류  (0) 2021.12.30
Comments