[개발자를 위한 실전 선형대수학] 1.1 NumPy로 벡터 생성 및 시각화하기

[chapter 1] 벡터, 파트1 : 벡터와 벡터의 기본 연산 

1. 벡터

선형대수학에서 벡터(vector)란 수를 순서대로 나열한 것

  • 차원(dimensionality) : 벡터가 가진 원소의 수
    • 차원은 $\mathbb{R}^{N}$ 으로 나타냄
    • 여기서 $\mathbb{R}$은 실수(Real number), N은 차원을 나타낸다.
    • 파이썬에서는 벡터의 길이(length), 모양(shape)이라 한다.
  • 방향(orientation) : 벡터가 열 방향인지 행 방향인지를 나타냄
    • 보통 벡터에 아무런 표시가 없다면 열 방향이라고 가정한다.
    • 행벡터는 $w^{T}$로 쓴다. 이 때 T는 전치 연산(transpose operation)을 나타낸다.(전치연산 = 열벡터를 행벡터로 변환)
    • 벡터 방향에 따라 계산 결과가 다를 수 있다.

식 1-1) 열벡터와 행벡터의 예

$$ x=\begin{bmatrix}
1 \\
4 \\
5 \\
6 \\
\end{bmatrix}, y=\begin{bmatrix}
.3 \\ -7
\end{bmatrix}, z =\begin{bmatrix}
1 & 4 & 5 & 6 \\
\end{bmatrix}$$

 

  • x는 4차원 열벡터, y는 2차원 열벡터, z는 4차원 행벡터
  • $x \in \mathbb{R}^{4}$로 나타낼 수 있다.
  • x와 z는 방향이 다르기 때문에 동일한 순서로 동일한 원소를 가지고 있어도 다른 벡터이다.

2. NumPy 배열로 벡터 생성하기

asList = [1,2,3]
asArray = np.array([1, 2, 3]) # 1차원 배열
rowVec = np.array([ [1, 2, 3] ]) # 행
colVec = np.array([ [1],[2],[3] ]) # 열
  • asArray 변수는 방향이 없는 배열. 행이나 열벡터가 아닌 Numpy의 숫자 1차원 리스트이다.
  • Numpy의 방향은 대괄호로 지정한다.
    • 가장 바깥쪽 대괄호 = 모든 숫자를 하나의 객체로 묶는다.
    • 추가적인 내부 괄호 집합 = 행을 나타낸다.
  • rowVec은 하나의 행이 모든 숫자를 가지는 행벡터이고, colVec은 하나의 숫자를 가진 행이 여러 개 있는 열벡터이다.

변수의 모양은 아래처럼 살펴볼 수 있다.(주석이 출력 결과)

print(f'asList:{np.shape(asList)}') # asList:(3,)
print(f'asArray:{np.shape(asArray)}') # asArray:(3,)
print(f'rowVec:{np.shape(rowVec)}') # rowVec:(1, 3)
print(f'colVec:{np.shape(colVec)}') # colVec:(3, 1)
  • 1차원 배열인 asArray는 모양이 (3)
  • 방향이 부여된 벡터는 2차원 배열 = 방향에 따라 모양이 (1,3) 또는 (3,1)이다.
  • 차수는 항상 (행, 열)로 표현한다.

3. 벡터의 기하학적 해석

위와 같은 순서대로 나열된 수 목록은 벡터의 대수학적 해석이다.

기하학적으로 해석하면 벡터는 특정 길이(또는 크기)와 방향(또는 각도)을 가진 직선이다.

  • 벡터의 두 점은 꼬리(시작하는 곳)와 머리(끝나는 곳)라고 부른다.
  • 머리는 꼬리와 구분하기 위해 화살표가 달려있다.
  • 벡터가 원점에서 시작될 때 = 기준 위치(standard position)의 벡터
    • 꼬리가 원점에 있고 머리는 기하학적 좌표를 가리킨다.

✅ 나의 정리 with ChatGPT

기하학적 관점과 대수학적 관점이 이해가 잘 안됐는데, 아래처럼 나름의 이해를 해보았다.

벡터는 두 가지 방법으로 이해할 수 있다.

  • 대수학적으로(숫자로 보기) = 순서대로 나열된 수들의 묶음
    • 벡터 [1,2,3] 이라
    • 즉, x로 1, y로 2, z로 3만큼 이동하는 3차원 벡터를 나타낸다.(이동량)
    • 수들이 벡터의 방향과 이동 거리(크기)를 알려준다.
    • 즉, 벡터는 공간에서의 변화량, 움직임 그 자체를 수의 묶음으로 표현하는 방법
  • 기하학적으로(그림으로 보기) = 평면 위의 화살표
    • 화살표가 시작하는 점 = 꼬리
    • 화살표가 끝나는 점 = 머리
    • 즉 벡터 (3,2)는 원점(0,0)에서 시작해서 (3,2)까지 가는 화살표로 그릴 수 있다.
    • 이 때, 꼬리가 원점에 있는 벡터를 기준 위치의 벡터라고 한다.
    • 즉, 평면 위의 화살표 그 자체
  • 즉, 벡터는 '움직임'이고, 숫자로 표현하면 대수학적 벡터, 그림으로 표현하면 기하학적 벡터이다.