본문 바로가기
Python/python 응용: 수학 및 과학

Python과 선형대수: NumPy를 이용한 벡터 연산

by 철이88 2022. 12. 5.
반응형

Python의 외부 라이브러리 NumPy를 이용하면 배열에 대한 연산을 할 수 있습니다. 또한 벡터는 숫자로 된 성분들의 1차원 배열로 볼 수 있기 때문에 NumPy를 사용하여 벡터들의 연산을 계산할 수 있습니다. 이번 포스팅에서는 python으로 기본적인 벡터 연산을 해보겠습니다. 

1. 배열(array)을 이용하여 벡터 생성하기


먼저 python의 외부 라이브러리인 NumPy를 이용하기 위해선 import를 해야 합니다.
저는 다음과 같이 numpy를 np라는 이름으로 import 하겠습니다.

import numpy as np

이렇게 하면 numpy의 메소드 등을 사용할 때 numpy 대신 np라고 짧게 쓸 수 있습니다.

 

NumPy를 사용하기 위해서는 이 모듈을 설치해야 합니다.

PIP를 이용한 NumPy 모듈 설치 방법은 아래 링크를 참조하시기 바랍니다.

아주 쉬운 Python 설치 및 시작 (윈도우에서 PIP 사용)


그러면 다음과 같이 numpy의 array를 사용하여 벡터를 생성할 수 있습니다.

vector1 = np.array([1.0, 2.0, 3.0])
vector2 = np.array([4.0, 5.0, 6.0])

선형대수 수업에서는 보통 벡터를 열 형태(column form)로 많이 쓰지만, python에서는 행 형태(row or vertical form)로 쓰는 것이 편하니 특별한 이유가 없으면 행으로 쓰겠습니다.
물론, 좀 불편하지만 벡터를 다음과 같이 열 형태로 생성할 수도 있습니다.

vector3 = np.array([[7],
          [8],
          [9]])



2. 벡터 합과 스칼라 곱


다음과 같이 두 벡터가 있다고 가정하겠습니다.
$v$ = $\begin{pmatrix} \begin{array}{r} v_{1} \\ v_{2} \end{array} \end{pmatrix}$ 와 $w$ = $\begin{pmatrix} \begin{array}{r} w_{1} \\ w_{2} \end{array} \end{pmatrix}$
그러면 두 벡터의 합은 아래와 같이 벡터들의 같은 위치의 성분들끼리 더해주면 됩니다.
$v$ + $w$ = $\begin{pmatrix} \begin{array}{r} v_{1} + w_{1} \\ v_{2} + w_{2} \end{array} \end{pmatrix}$
또한, 스칼라 곱 역시 스칼라를 벡터의 각 성분에 곱해주면 됩니다.
$cv$ = $\begin{pmatrix} \begin{array}{r} cv_{1} \\ cv_{2} \end{array} \end{pmatrix}$.

 

벡터의 연산에 대한 더 자세한 내용은 아래를 참조하시기 바랍니다.

1.1 벡터 (vector) & 선형 결합 (linear combination)



이와 같은 벡터 연산은 아래 예와 같이 간단히 계산할 수 있습니다.

import numpy as np
vector1 = np.array([1.0, 2.0])
vector2 = np.array([3.0, 4.0])

print("Addition:", vector1 + vector2)
print("Scalar multiplication:", 3*vector1)

위 예는 
$\begin{pmatrix} \begin{array}{r} 1 \\ 2 \end{array} \end{pmatrix}$ + $\begin{pmatrix} \begin{array}{r} 3 \\ 4 \end{array} \end{pmatrix}$ = $\begin{pmatrix} \begin{array}{r} 1 + 3 \\ 2 + 4 \end{array} \end{pmatrix}$ = $\begin{pmatrix} \begin{array}{r} 4 \\ 6 \end{array} \end{pmatrix}$
의 벡터합과
$3$$\begin{pmatrix} \begin{array}{r} 1 \\ 2 \end{array} \end{pmatrix}$ = $\begin{pmatrix} \begin{array}{r} 3{\cdot}1 \\ 3{\cdot}2 \end{array} \end{pmatrix}$ = $\begin{pmatrix} \begin{array}{r} 3 \\ 6 \end{array} \end{pmatrix}$
의 스칼라 곱을 계산한 것입니다.

3. 벡터의 내적(dot product): dot() 메소드


두 벡터의 내적은 numpy의 dot() 메소드를 사용하면 계산할 수 있습니다.
사용법은 다음과 같습니다.

dot_product = vector1.dot(vector2)

벡터의 내적에 대한 자세한 내용은 아래를 참조하시기 바랍니다.

1.2 길이와 내적(dot product)

반응형

댓글