Python에서 행렬의 곱셈 역원, 즉 역행렬(inverse matrix)을 계산하려면 numpy.linalg.inv() 메서드를 사용합니다. 정방행렬(square matrix) a가 주어졌을 때, 이 메서드는 dot(a, ainv) = dot(ainv, a) = eye(a.shape[0]) 조건을 만족하는 행렬 ainv를 반환합니다. 여기서 첫 번째 매개변수인 a는 역행렬을 구하고자 하는 대상 행렬입니다.
역행렬이란?
역행렬은 원래 행렬과 곱했을 때 단위행렬(identity matrix)이 되는 행렬을 의미합니다. 선형 연립방정식 풀이, 좌표 변환, 데이터 분석 등 다양한 수학적·공학적 문제에서 널리 활용됩니다.
단계별 구현 방법
먼저 필요한 라이브러리를 임포트합니다.
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(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(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]]
참고 사항
역행렬은 오직 정방행렬(n×n 형태)에 대해서만 존재할 수 있습니다. 또한 행렬식(determinant)이 0인 특이행렬(singular matrix)의 경우 역행렬이 존재하지 않으므로, 이때는 LinAlgError 예외가 발생합니다. 따라서 실무에서는 역행렬 계산 전에 행렬식 값을 먼저 검토하거나, 수치적 안정성이 더 뛰어난 유사역행렬(pseudo-inverse) 계산을 위해 np.linalg.pinv()를 사용하는 것이 좋습니다.