본문 바로가기

Codestates AI 부트캠프/1. Introduction to Data Sceince

[기초 수학] 3-1 기본 선형대수

1. list와 array 그리고 set

list
- 파이썬 기본 배열
- 하나의 list 안에 서로 다른 자료형을 담을 수 있다
- 수치적 연산 불가

array
- numpy 배열
- 하나의 array 안에는 동일한 자료형들만 담을 수 있다
- 수치적 연산 가능 (array 내 평균 구하기, 다른 array와의 덧셈-뺄셈 등)

 

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


set
- 순서가 없다
- 자료간 중복을 허용하지 않는다


2. 선형대수

 

선형대수를 이용해 컴퓨터에 데이터를 이해시키고 그 속의 패턴을 설명한다. 

a. 스칼라 : 상수 

 

b. 벡터 : 1차원 형태의 배열

벡터의 크기(norm, length, magnitude)
- 벡터의 길이를 나타내므로 음수가 될 수 없음

 


벡터의 내적(Dot product)

- 두 벡터의 차원이 같을 때 구할 수 있다
- 서로 대응하는 성분을 곱한 뒤 모두 합하여 구한다
- 만약 두 벡터의 내적이 0이라면 두 벡터는 서로 수직이다

 

np.dot(v1, v2)

 

c. 매트릭스 : 2차원 형태의 배열


- 행과 열의 개수는 매트릭스의 차원을 의미

 

mat_a = np.array([[1,3,5], [2,4,6]])
mat_a

#array([[1, 3, 5],
       [2, 4, 6]])


#행렬의 전치
mat_a.T
np.transpose(mat_a)

#행렬곱
#앞 행렬의 열 갯수와 뒷 행렬의 행 갯수가 같으면 곱할 수 있다
mat_b = np.array([[1,-1,0,2],[0,1,2,-1],[2,3,-1,1]])
#array([[ 1, -1,  0,  2],
        [ 0,  1,  2, -1],
        [ 2,  3, -1,  1]])

np.matmul(mat_a, mat_b)


정사각 행렬
- 열 갯수와 행 갯수가 일치하는 행렬

대각 행렬
- 왼쪽 상단에서 오른쪽 하단으로 내려가는 주 대각선을 제외한 모든 성분이 0인 정사각 행렬

단위 행렬
- 대각 행렬 중에서 주 대각성 성분이 모두 1이고 나머지 원소는 모두 0인 매트릭스
-  임의의 정사각 행렬 A에 단위 행렬 I를 곱한 것은 자기 자신과 같다 

np.eye(2, dtype=int)
#array([[1, 0],
        [0, 1]])

 

역행렬
- 임의의 정사각 행렬 I에 대하여 곱했을 때 단위 행렬이 되도록 하는 행렬

- 역행렬을 구하는 식은 다음과 같다

#mat_c의역행렬 구하기
mat_c = np.array([[1,2],[3,4]])
np.linalg.inv(mat_c)


행렬식(Determinant)
- 정사각 행렬에 대해서만 구할 수 있다
- 행렬식이 0이면 역행렬이 존재하지 않는다

 

#행렬식 구하기
np.linalg.det(mat_c)


d. span

- 주어진 두 벡터의 조합으로 만들 수 있는 모든 가능한 벡터의 집합

- 두 벡터가 선형 관계에 있지 않을 때, 선형적으로 독립됐다고 말한다. 이때 벡터들이 만들어내는 span의 차원은 벡터의 수와 같다.
- 같은 선상에 있는 벡터들은 선형 관계에 있다고 말한다. 이런 벡터는 선 외부에 조합을 통한 새로운 벡터를 생성할 수 없다. 

- 선형관계 여부는 rank() 매서드를 통해 알 수 있다.