Numpy

np.array()의 인자는 하나 (리스트나 튜플 형태로 넘겨주어야함)

 

 

터와 스칼라 연산

  • 벡터의 각 원소에 대해서 연산을 진행

 

$$ x = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix} \quad c = 5 $$

 

 

벡터와 벡터 연산

  • 벡터의 같은 인덱스끼리 연산이 진행됨

 

$$ y = \begin{pmatrix} 1 \\ 3 \\ 5 \end{pmatrix} \quad z = \begin{pmatrix} 2 \\ 9 \\ 20 \end{pmatrix} $$

 

 

 

Array의 Indexing, Slicing

  • Python의 리스트와 유사하게 진행

 

$$ W = \begin{pmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{pmatrix} $$

  • Indexing
    Array에서 특정 위치의 원하는 원소를 가져올 때 인덱싱을 이용

 

 

  • Slicing
    Array에서 특정 범위의 원하는 원소들을 가져올 때 Slicing을 이용

 

 

 


Array의 Broadcasting

Numpy가 연산을 진행하는 특수한 방법

기본적으로 같은 Type의 data에 대해서만 연산이 적용가능
하지만 만약 피연산자가 연산 가능하도록 변환이 가능하다면 연산이 가능.
이를 Broadcasting이라고 한다.

  1. \(M \times N, \quad M \times 1 \)
    (3 x 3)과 (3 x 1)을 연산하면 3 x 1을 3 x 3으로 차원 수를 맞추고 연산을 한다.

 

 

 

  1. \(M \times N, \quad 1 \times N \)
    (3 x 3)과 (1 x 3)을 연산하면 1 x 3을 3 x 3으로 차원 수를 맞추고 연산을 한다.

 

 

 

  1. \(M \times 1, \quad 1 \times N \)
    (3 x 1)과 (1 x 3)을 연산하면 둘 다 3 x 3으로 차원 수를 맞추고 연산을 한다.

 

 


Numpy와 선형대수

A. Basics

영벡터(영행렬)

  • 원소가 모두 0인 벡터(행렬)
  • `np.zeros(dim)을 통해 생성, dim은 값 혹은 튜플(,)

 

 

 

일벡터(행렬)

  • 원소가 모두 1인 벡터(행렬)
  • np.ones(dim) 을 통해 생성, dim은 값, 튜플(,)

 

 

 

대각행렬(diagonal matrix)

  • Main diagonal을 제외한 성분이 0인 행렬
  • np.diag((main_diagonal)) 을 통해 생성할 수 있음.

 

 

 

항등행렬 (identitiy matrix)

  • Main diagonal이 1인 대각행렬
  • np.eye(n, (dtype= int, uint, float, ...)) 을 통해 생성할 수 있음

 

 

 

 

행렬곱 (dot product)

  • 행렬간의 곱연산
  • np.dot() or @ 사용

 

 

 

 

 


B. Furthermore

트레이스 (trace)

  • Main diagonal의 Sum
  • np.trace()을 사용

 

 

행렬식 (determinant)

  • 행렬을 대표하는 값들 중 하나
  • 선형변환 과정에서 vector의 Scaling 척도
  • np.linalg.det() 으로 계산

 

 

 

 

역행렬 (inverse matrix)

  • 행렬 A에 대해 AB = BA = I를 만족하는 행렬 B = A^-1
  • np.lnalg.inv() 을 사용

 

 

 

 

 

고유값과 고유벡터 (eigenvalue and eigenvector)

  • 정방행렬(nxn) A에 대해 $ Ax = \lambda x$를 만족하는 상수 $ \lambda\ $와 이에 대응하는 벡터
  • np.linalg.eig() 로 계산