728x90
Numpy

Numpy

  • 과학 계산의 경우 행렬 연산의 비중이 높으며, 이를 효율적으로 처리하기 위해 사용되는 라이브러리
import numpy as np np.arange(10) # array([0,1,2,3,4,5,6,7,8,9])

Scalar

  • 단일 값으로 표현
    • pi, 온도, x, y 등등...
  • 스칼라값은 소문자 알파벳으로 표현 (a,b,c,d,...)

Vector

  • 값으로 이루어진 array
  • column vector : x=[x1x2x3...]x = \begin{bmatrix} x_1\\ x_2\\ x_3\\ ... \end{bmatrix}
  • row vector : x=[x1,x2,x3,...]x = \begin{bmatrix} x_1, x_2, x_3, ... \end{bmatrix}

Matrice

  • 값으로 이루어진 2차원 배열
  • x=[x11,x12,...,x1mx21,x22,...,x2m...xm1,xm2,...,xmm]x=\begin{bmatrix} x_{11},x_{12}, ..., x_{1m}\\ x_{21},x_{22}, ..., x_{2m}\\ ...\\ x_{m1},x_{m2}, ..., x_{mm}\\ \end{bmatrix}
  • 머신러닝에 있어서 많은 데이터는 벡터나 행렬로 표현
  • matrix 생성 함수
    • np.array([list]) : list를 numpy 배열로 변환
    • np.arange(n) : 0~n-1의 배열 생성
    • np.reshape(r,c) : r x c 크기로 배열 재생성
    • np.zeros(size) : 0행렬 생성
    • np.ones(size) : 모든 원소가 1인 행렬 생성
    • np.full(size, element) : 해당 행렬을 element로 채움
    • np.random.random(size) : 0 ~ 1 사이의 값을 원소로 갖는 행렬 생성
    • Transepose(행렬) or 행렬.T : 행렬의 행-열을 바꿈
    • np.shape() : (행, 열) 반환
    • len(arr.shape) : 몇차원 행렬인지를 반환

Tensor

  • 2개 이상의 축을 갖는 행렬
    • ex. RGB image(가로, 세로 x 3 (R, G, B))
  • tensor 연산 : 일반 연산과 동일하게 작성
    • 곱셈, 나눗셈은 행렬곱이 아닌 원소 간의 곱으로 계산
  • reduction
    • 원소들의 합을 계산하고, 1개 축을 제거
    • tensor.sum()
      • axis 미지정시 전체 원소의 합
      • axis : 0인 경우 세로 방향의 합을, 1인 경우 가로 방향의 합 계산
      • keepdims : 합을 계산 후 배열 크기를 유지
  • np.identity : 단위행렬 반환
  • np.diag : 대각행렬 반환
  • np.dot(vec1, vec2) : 행렬의 합성곱(x1×x2\sum x_1 \times x2) 계산

Norm

  • 벡터를 스칼라를 연결
    • 벡터의 크기에 대한 표현
  • norm f의 특징
    • f(ax)=af(x)f(ax)=|a|f(x) : vector에 상수를 곱한 만큼 증가
    • f(x+y)f(x)+f(y)f(x+y)\leq f(x)+f(y)
    • f(x)0f(x)\geq 0 : norm은 항상 0 이상
  • LpnormL_p-norm : xp=[i=1nxip]1/p||x||_p=[\sum^n_{i=1}|x_i|^p]^{1/p}
    • L1 norm : manhattan distance ( 절대값의 합 )
    • L2 norm : Euclidian distance
728x90

+ Recent posts