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이라고 한다.
- \(M \times N, \quad M \times 1 \)
(3 x 3)과 (3 x 1)을 연산하면 3 x 1을 3 x 3으로 차원 수를 맞추고 연산을 한다.
- \(M \times N, \quad 1 \times N \)
(3 x 3)과 (1 x 3)을 연산하면 1 x 3을 3 x 3으로 차원 수를 맞추고 연산을 한다.
- \(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()
로 계산
'프로그래머스인공지능스쿨' 카테고리의 다른 글
[3주차 - Day4] Python으로 시각화하기 - Matplotlib (0) | 2021.05.06 |
---|---|
[3주차 - Day3] Python으로 데이터 다루기 II - Pandas (0) | 2021.05.05 |
[3주차 - Day2] 참고 : Git (0) | 2021.05.04 |
[3주차 - Day1] 인공지능 수학 - 추정, 검정, 엔트로피 (0) | 2021.05.03 |
[2주차 - Day4] 인공지능 수학 - 확률과 확률분포(2) (0) | 2021.04.29 |