Numpy 

 

Array의 Indexing와 Array의 Slicing

 

Python의 List와 유사하게 진행한다.

 

Array의 Broadcasting

 

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

 

  1. M x N, M x 1
    • M x 1 부분을 N만큼 똑같이 복제해서 계산한다.
  2. M x N, 1 x N
    • 1 x N 부분을 M만큼 똑같이 복제해서 계산한다.
  3. M x 1, 1 x N
    • 서로 보완하는 구조로 M x 1 부분은 N만큼, 1 x N 부분은 M만큼 복제해서 계산하여 M x N 구조의 Array가 결과물로 출력된다.

 

영벡터를 numpy로 선언

 

영벡터 = 원소가 모두 0인 벡터(행렬)

 

np.zeros(dim)을 통해 생성한다.


일벡터(일행렬)을 numpy로 선언

 

일벡터 = 원소가 모두 1인 벡터(해열)

 

np.ones(dim)을 통해 생성


대각행렬 (diagonal matrix)

 

Main diagonal을 제외한 성분이 0인 행렬

 

np.diag(main_diagonal)을 통해 생성


항등행렬 (identity matrix)

 

Main diagonal이 1인 대각행렬

 

np.eye()를 사용


행렬곱 (dot product)

 

행렬간의 곱연산

 

np.dot or @ 사용


Linear Algebra with Numpy

 

트레이스 (trace)

 

Main diagonal의 합

 

np.trace()를 사용


행렬식 (determinant)

 

행렬을 대표하는 값들 중 하나 => 선형변환

 

ex)

 

1 4 7

2 5 8

3 6 9

 

=> 

 

1(5 * 9 - 6 * 8) - 4(2 * 9 - 3 * 8) + 7(2 * 6 - 3 * 5) = - 3 + 24 - 21 = 0

 

Full rank가 아니다. 즉, 선형변환 과정에서 차원의 손실이 일어난다.

 

선형변환을 통해 insight를 얻을 수 있다!

 

np.linalg.det()으로 계산


역행렬

 

행렬 A에 대해 AB = BA = 1을 만족하는 행렬 B = A^-1

 

np.linalg.inv()으로 계산


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

 

 Ax = λx가 있을 때 이 등식을 만족시키는 λ값과 이에 대응하는 x를 각각 고유값과 고유벡터라고 한다.

 

np.linalg.eig()으로 계산.

이 때 결과는 column을 기준으로 eigenvector가 된다.

numpy의 Container, array

 

행렬 선언 

 

arr = np.array([1,2,3]) 

 

Array의 차원 알아보기

 

arr.shape


선형 시스템 (Linear System) 

= 연립일차방정식

 

아주 간단한 예시..

 

1)

 

3x = 6

=> 1/3*(3x) =1/3*62

=> x=2 

 

2)

 

3x + y = 2 --- E₁

x - 2y = 3 --- E₂

 

     6x + 2y = 4 --- 2*E₁

+    x  - 2y = 3

--------------------

     7x        = 7

 

∴ x = 1, y = -1


선형대수의 목표

 

어떠한 선형시스템의 문제라도 정형적인 방법으로 표현하고 해결하는 방법을 배우는 것

 

3x + y + z = 4

x - 2y - z = 1

x + y + z =2

 

위 방정식들 각각은 Linear equation(선형 방정식)이라고 한다.

 

Linear의 의미는 선의 형태라는 것이다.

x, y, z를 그래프상 그려봤을 때 직선으로 그어진다 OR 올곧게 그려진다면 선형 방정식이라고 할 수 있다.

 

풀기 전까지는 모르는 x, y, z는 미지수(unknown 혹은 variable(변수))라고 한다.

 

위의 식과 같이 3개의 linear equation과 3개의 unknowns로 구성된 연립일차방정식을 3x3 linear system이라고 한다.

 

(식의 개수x미지수의 개수) linear system

 

예시를 보면서 NxM 선형 시스템의 개념에 대해 더 잘 이해해 보도록 하자.

 

ex 1)

 

3x + y + z = 4

x - 2y - z = 1

 

=> 식의 개수는 2개, 미지수는 x, y, z 3개로 2x3 선형 시스템이다.

 

ex 2)

 

2x + y =3

 

=> 식의 개수는 1개, 미지수는 x, y 2개로 1x2 선형 시스템이다.

 

ex 3)

 

3x + y = 2

x - 2y = 3

2x - 4y = 6

 

=> 식의 개수는 3개, 미지수는 x, y 2개로 3x2 선형 시스템이다.

 

ex 4)

 

sin x + y = 2

 

=> 그래프의 형태가 이미 곡선으로 그려지기 때문에 비선형 방정식(non-linear equation)이다.

 

ex 5)

 

3x + y³ = 2

 

=> 미지수의 차수가 1 이상이므로 곡선의 형태를 띄게 되기 때문에 비선형 방정식(non-linear equation)이다.

 

ex 6)

 

xy + z = 3

 

=> x와 y가 곱해지는 형태가 이뤄지면서 unknown 자체의 차수가 2가 되므로 비선형 방정식(non-linear equation)이다.

 


선형 시스템의 표현 : Ax = b (연립일차방정식의 대수적 표현)

 

Ax = b로 표현하기

 

  1. 선형 시스템의 unknowns(미지수)를 모아 column vector(열벡터) x로 표현한다.
  2. 선형 시스템의 linear equation(선형방정식)에 대해 다음을 수행한다.
    • coefficients(계수)를 모아 A의 row vector(행벡터)로 표현한다.
    • constant(상수)를 모아 b에 표현한다.

ex)

 

3x + y = 2

x - 2y = 3

2x - 4y = 6

 

        A                 x      =        b

  

 

m x n 선형 시스템의 Ax = b 표현을 정리하면...

 

  • 식은 행이고, 행은 식이다. (linear equation <-> row)
  • m은 linear equation(선형방정식)의 개수이다.
  • n은 unknown(미지수)의 개수이다.
  • A는 m x n 행렬이다.
  • x는 n-벡터이다.
  • b는 m-벡터이다.

 

 

+ Recent posts