[파이썬][numpy] numpy에서 고유값과 고유벡터

numpy는 Python에서 수치 계산을 위한 강력한 라이브러리로, 고유값과 고유벡터를 계산하는데 사용될 수 있습니다. 고유값과 고유벡터는 선형 변환에서 중요한 역할을 하며, 데이터 분석이나 머신러닝 분야에서 널리 활용됩니다.

고유값과 고유벡터란?

어떤 정방 행렬 A와 벡터 v에 대하여, 고유값(eigenvalue) λ와 고유벡터(eigenvector) v는 다음 식을 만족하는 벡터와 스칼라 값입니다.

Av = λv

여기서 v는 0이 아닌 벡터이며, λ는 스칼라 값입니다. 즉, 행렬 A를 v에 적용한 결과는 스칼라 값 λ와 v의 곱인 것입니다. 고유값은 행렬 A의 크기와 방향을 변하지 않고 유지하는 값이고, 고유벡터는 그 방향을 변하지 않으면서 스칼라 값에 대하여 스케일링이 되는 벡터입니다.

numpy를 사용하여 고유값과 고유벡터 계산하기

numpy의 eig 함수를 사용하여 고유값과 고유벡터를 계산할 수 있습니다. 아래는 numpy를 사용하여 고유값과 고유벡터를 계산하는 예제 코드입니다.

import numpy as np

# 임의의 정방 행렬 생성
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 행렬 A의 고유값과 고유벡터 계산
eigenvalues, eigenvectors = np.linalg.eig(A)

# 고유값 출력
print("Eigenvalues:", eigenvalues)

# 고유벡터 출력
print("Eigenvectors:")
for i in range(len(eigenvalues)):
    print("Eigenvalue:", eigenvalues[i])
    print("Eigenvector:", eigenvectors[:, i])

위 코드에서는 np.linalg.eig 함수를 사용하여 행렬 A의 고유값과 고유벡터를 계산합니다. eigenvalues 변수에는 고유값들이, eigenvectors 변수에는 각 고유값에 대응되는 고유벡터들이 저장됩니다. 그리고 루프를 통해 각 고유값과 해당하는 고유벡터를 출력합니다.

이 예제 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Eigenvalues: [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
Eigenvectors:
Eigenvalue: 16.116843969807043
Eigenvector: [-0.23197069 -0.78583024  0.40824829]
Eigenvalue: -1.1168439698070445
Eigenvector: [-0.52532209 -0.08675134 -0.81649658]
Eigenvalue: -1.300668875727303e-15
Eigenvector: [0.81843481 -0.61541221  0.40824829]

위 결과에서는 행렬 A의 고유값과 해당하는 고유벡터들을 확인할 수 있습니다.

결론

numpy는 파이썬에서 고유값과 고유벡터를 계산하는데 유용한 도구입니다. eig 함수를 사용하여 간단히 고유값과 고유벡터를 구할 수 있으며, 데이터 분석이나 머신러닝 분야에서 여러가지 응용에 활용할 수 있습니다.