[python] 넘파이를 이용한 행렬 분해
행렬 분해는 행렬을 여러 개의 특정한 형태로 나누는 것을 말합니다. 넘파이는 파이썬에서 행렬 분해를 쉽게 할 수 있는 강력한 라이브러리입니다. 특히, 넘파이의 linalg
모듈을 사용하면 다양한 행렬 분해 기법을 적용할 수 있습니다.
특이값 분해 (Singular Value Decomposition, SVD)
특이값 분해는 임의의 행렬을 세 행렬의 곱으로 분해하는 기법입니다. 넘파이에서는 numpy.linalg.svd
함수를 사용하여 특이값 분해를 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다:
import numpy as np
# 임의의 3x3 행렬 생성
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 특이값 분해
U, S, VT = np.linalg.svd(A)
print('U:', U)
print('S:', S)
print('VT:', VT)
위 코드에서 U
, S
, VT
는 각각 좌특이벡터 행렬, 특이값 배열, 우특이벡터 전치 행렬을 의미합니다.
고윳값 분해 (Eigenvalue Decomposition)
고윳값 분해는 정방 행렬을 대각화하는 분해 기법입니다. 넘파이에서는 numpy.linalg.eig
함수를 사용하여 고윳값 분해를 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다:
import numpy as np
# 정방 2x2 행렬 생성
A = np.array([[1, 2], [2, 1]])
# 고윳값 분해
eigenvalues, eigenvectors = np.linalg.eig(A)
print('Eigenvalues:', eigenvalues)
print('Eigenvectors:', eigenvectors)
위 코드에서 eigenvalues
는 고윳값을, eigenvectors
는 대응하는 고윳벡터를 나타냅니다.
넘파이를 이용하면 이 외에도 다양한 행렬 분해 기법을 쉽게 적용할 수 있습니다. 행렬 분해는 선형 대수학과 데이터 분석 등 다양한 분야에서 중요하게 사용되며, 넘파이는 이를 위한 강력한 도구를 제공합니다.