하나의 행 또는 열을 가지는 행렬을 각각 행백터(row vector), 열벡터(column vector)라고 부른다.
(단, 기본적으로 행렬에서 그냥 '벡터'라고 하면 열벡터를 기존으로 한다.)
1 x 1 행렬은 숫자, 즉 '스칼라(scalar)'라고 한다. ex) [8]
행과 열을 교환한 행렬 (A^T)ij = (A)ji
ex)
A = [ [1,2],[3,4],[5,6] ] / A^T = [ [1,3,5],[2,4,5] ]
모든 행렬의 요소가 0이면 'O'라고 표기하는 영행렬.
행과 열 모두 n인 행렬을 n차 square matrix 라고 한다.
※ An = [ [a11 a12, a13],[a21, a22, a23],[a31, a32, a33] ]
a11,a22,a33과 같이 aii 를 An의 main diagonal(주대각선)이라 한다.
주대각선이 1이고 나머지 요소가 모두 0인 n차 정방행렬.
따라서, 숫자 1과 같은 존재로 행렬 곱에 대한 항등원 역할을 한다.
ex)
1 0 0
0 1 0
0 0 1
A mxr * B rxn = Cmxn
Cij = ai1 x b1j + ai2 x b2j .... air x brj
: Cij를 알고 싶은 것과 C23은 완전히 독립적으로 계산되기 때문에 병렬적이다.
i) 7 scalar = [7] 1-vector = [7]1x1 1x1 matrix
ii) 벡터는 여러 숫자가 일열로 늘어선 구조
ex)
[1,2,3,4] 1-vector = [1,2,3,4]1x4 matrix = [[1,2],[3,4]]2x2 matrix
-> 응용문제에 따라 결정되는 행렬의 모양.
iii) 행렬은 사각형 구조에 여러 숫자가 행과 열로 늘어선 구조
1 2 3
4 5 6
= [1,2,3,4,5,6] 1-vector = [1,4,2,5,3,6] 1-vector
스칼라, 벡터, 행렬을 아우르는 개념으로 숫자가 늘어설 수 있는 방향이 k개면,
k-tensor 라고 부른다.
행렬을 조각(partition) 단위로 부분행렬(submatrix) 구조로 확장해서 생각할 수 있다.
이러한 구조방법을 분할행렬 or 블록행렬이라 부른다.
AB = A[b1, b2, ... bn] = [Ab1, Ab2, ... Abn] = C
AB = [a1,a2,an]B =
a1B
a2B
... = C
anB
2-vector v는 xy평면 상에서 원점(0,0)부터 (a,b)에서 끝나는 벡터를 의미.
v = [a,b] = I[a,b] = [[1,0],[0,1]][a,b] = a[1,0] + b[0,1]
이때 [1,0]를 곱한다는 건 X축으로 한발씩, [0,1]를 곱한다는 건 Y축으로 한발씩을 의미하기 때문에 xy평면에서 표현 가능하다.
Ax = Ib
- 우항 : 표준좌표계(I)에서 어떤 벡터의 좌표값은 'b'이다.
- 좌항 : A의 열벡터를 기저(basis)로 가지는 좌표계에서 동일 벡터의 좌표값은 'x'이다.
벡터들에 대한 가중치 합을 선형조합(linear combination)이라고 한다.
f(x+y) = f(x)+f(y) and f(cx) = cf(x) 인 함수 f를 선형함수라고 한다.
※ 선형 함수란 선형태가 직선형태의 올곧은 평평한 형태라 그려 봐야알지만,
위의 2가지 모두 조건에 해당하면 그릴 필요이 선형함수 인 것이다.
함수의 입력이 n-vector이고 출력이 m-vector인 함수T 를 변환이라 한다.
T : R^n -> R^m (R은 실수)
단, n=m일 경우, 해당변환을 '연산자(operator)'라고 한다.
Amn * x = b ( x : n-vector, b : m-vector )
m x n인 행렬 A에 대해 Ax는 x라는 n-vector를 입력받아 b라는 m-vector를 출력하는 변환이라 표현할 수 있고 이를 행렬 변환이라 한다.
A(x+y) = A(x) + A(y) and A(cx) = cA(x) (단, x,y는 실수 이고 c는 임의의 scalar)
- 구현하고자 하는 기능의 입력, 출력이 vector인지 확인.
- 구현하고자 하는 기능이 선형인지 확인.(직선을 함수에 넣으면 직선이 나오는지)
- 입력이 n-vector, 출력이 m-vector이면, m x n 표준행렬을 구성한다.
n-차원 표준기저벡터 {e1,e2, ... , en } 이 있으면, 각 ei에 대해, 원하는 기능을 동작시켜 얻은 결과인 m-vector인 T(ei)를 표준행렬의 각 열에 넣는다.
A = [ TA(e1), TA(e2), ... , T(en) ] m x n
reshape함수는
np.reshape(변경할 배열, 차원) 또는 배열.reshape(차원)으로 사용 할 수 있으며,
현재의 배열의 차원(1차원,2차원,3차원)을 변경하여 행렬을 반환하거나 하는 경우에 많이 이용되는 함수이다.
ex)
import numpy as np
s = 3
a = np.reshape(s, (1,))
print(a) # [3]
print(a.shape) #(1,)