이 글에서는 사용자로부터 크기 n을 입력받아 n×n 크기의 단위 행렬(identity matrix)을 출력하는 파이썬 프로그램을 만들어 보겠습니다. 단위 행렬은 주대각선의 요소가 모두 1이고 나머지 요소는 모두 0인 정방행렬로, 선형 대수학에서 항등원 역할을 하는 매우 중요한 행렬입니다.
NumPy 라이브러리에서 제공하는 identity() 함수를 사용하면 복잡한 반복문 없이도 단위 행렬을 한 줄로 생성할 수 있습니다. 이 함수는 행렬의 차원과 요소의 데이터 타입(dtype)을 매개변수로 받습니다.
알고리즘
1단계: numpy 모듈을 임포트합니다.
2단계: 사용자로부터 행렬의 차원(n)을 입력받습니다.
3단계: numpy.identity() 함수로 단위 행렬을 생성한 뒤 출력합니다.
예제 코드
import numpy as np
dimension = int(input("단위 행렬의 차원을 입력하세요: "))
identity_matrix = np.identity(dimension, dtype="int")
print(identity_matrix)
실행 결과
단위 행렬의 차원을 입력하세요: 5
[[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]]
코드 설명
np.identity(dimension, dtype="int")에서 첫 번째 인자는 생성할 행렬의 차원이며, 두 번째 인자인 dtype은 행렬 요소의 자료형을 지정합니다. 기본값은 실수형(float)이므로, 위 예제처럼 "int"를 지정하면 정수형 단위 행렬을 얻을 수 있습니다.
참고: eye() 함수
NumPy에는 eye()라는 유사한 함수도 있습니다. eye()는 행과 열의 개수를 각각 지정할 수 있어 직사각형 형태의 단위 행렬도 만들 수 있다는 점이 identity()와 다릅니다. 정방행렬만 필요하다면 identity(), 유연한 형태가 필요하다면 eye()를 사용하는 것이 좋습니다.