Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python numpy.linalg.inv()로 행렬의 역행렬(곱셈 역원) 계산하기

Python에서 행렬(matrix) 객체의 곱셈 역원, 즉 역행렬을 계산하려면 numpy.linalg.inv() 메서드를 사용하면 됩니다. 정방행렬 a가 주어졌을 때, 이 메서드는 dot(a, ainv) = dot(ainv, a) = eye(a.shape[0]) 조건을 만족하는 행렬 ainv를 반환합니다. 여기서 eye(a.shape[0])는 단위행렬을 의미하며, 원래 행렬과 그 역행렬을 곱했을 때 항상 단위행렬이 된다는 성질을 나타냅니다.

이 메서드의 첫 번째 매개변수 a는 역행렬을 구하고자 하는 대상 행렬입니다. 참고로 np.matrix 클래스는 최신 NumPy 버전에서 권장되지 않으므로(deprecated), 실무에서는 일반적인 2차원 ndarray에 직접 적용하는 것이 좋습니다.

단계별 진행 과정

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np
from numpy.linalg import inv

배열을 생성합니다.

arr = np.array([[ 5, 10], [ 15, 20 ]])

생성된 배열을 출력해 확인합니다.

print("Our Array...\n",arr)

배열의 차원을 확인합니다.

print("\nDimensions of our Array...\n",arr.ndim)

배열의 데이터 타입을 확인합니다.

print("\nDatatype of our Array object...\n",arr.dtype)

배열의 형태(shape)를 확인합니다.

print("\nShape of our Array object...\n",arr.shape)

numpy.linalg.inv() 메서드를 사용해 행렬 객체의 역행렬을 계산합니다.

print("\nResult...\n",np.linalg.inv(np.matrix(arr)))

전체 예제 코드

import numpy as np
from numpy.linalg import inv

# 배열 생성
arr = np.array([[ 5, 10], [ 15, 20 ]])

# 배열 출력
print("Our Array...\n",arr)

# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)

# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)

# 형태(shape) 확인
print("\nShape of our Array object...\n",arr.shape)

# numpy.linalg.inv() 메서드로 역행렬 계산
print("\nResult...\n",np.linalg.inv(np.matrix(arr)))

실행 결과

Our Array...
[[ 5 10]
[15 20]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(2, 2)

Result...
[[-0.4 0.2]
[ 0.3 -0.1]]

실행 결과를 보면 행렬 [[5, 10], [15, 20]]의 역행렬은 [[-0.4, 0.2], [0.3, -0.1]]임을 알 수 있습니다. 두 행렬을 서로 곱하면 2×2 단위행렬이 되어 올바른 역행렬이 계산되었음을 확인할 수 있습니다.