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

파이썬 행렬(Matrix) 완벽 가이드: 선언부터 입력·출력까지

파이썬에서 행렬(Matrix)은 특정 개수의 행(row)과 열(column)을 가진 2차원 배열을 의미합니다. 행렬의 데이터 요소는 숫자뿐만 아니라 문자열, 기호 등 다양한 자료형이 될 수 있습니다.

행렬 또는 2차원 리스트는 파이썬에서 매우 중요한 자료 구조입니다. 행렬과 관련된 대표적인 연산으로는 전치(transpose), 두 행렬의 덧셈, 곱셈 등이 있습니다.

이 글에서는 파이썬에서 행과 열의 개수를 지정하여 행렬을 선언하는 방법, 사용자로부터 데이터를 입력받는 방법, 그리고 마지막으로 행렬을 출력하는 방법까지 단계별로 살펴보겠습니다.

중첩 리스트(Nested List)로 행렬 선언하기

파이썬에서 행렬은 중첩 리스트(nested list) 형태로 선언할 수 있습니다. 이때 행과 열의 개수를 미리 지정해야 합니다. 예를 들어 행이 3개, 열이 4개인 행렬을 만들고 싶다면 다음과 같이 선언합니다.

Matrix = [[0] * 4 for i in range(3)]

위 코드는 0으로 초기화된 요소 4개짜리 리스트를 3번 반복하여, 3행 4열 크기의 2차원 리스트를 생성합니다. 리스트 컴프리헨션(list comprehension)을 사용하면 각 행이 서로 독립적인 리스트가 되므로, [0] * 3처럼 얕은 복사를 하는 방식보다 안전합니다.

행렬 요소 입력받고 행 단위로 출력하기

예제 코드

col = 4
rows = 3
matrix = [[0] * col for i in range(rows)]

for i in range(rows):
    print("Enter", "row", i + 1, "elements")
    for j in range(col):
        matrix[i][j] = int(input())

def rowwise(matrix):
    for i in range(rows):
        print(matrix[i])

print("print as nested list")
print(matrix)
print("print each row in separate line")
rowwise(matrix)

실행 결과

Enter row 1 elements
1
2
3
4
Enter row 2 elements
5
6
7
8
Enter row 3 elements
1
2
3
4
print as nested list
[[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
print each row in separate line
[1, 2, 3, 4]
[5, 6, 7, 8]
[1, 2, 3, 4]

코드 설명

먼저 rowscol 변수에 각각 행의 개수(3)와 열의 개수(4)를 저장합니다. 이후 중첩 반복문을 사용해 사용자로부터 값을 입력받아 matrix[i][j] 위치에 하나씩 저장합니다. 바깥쪽 반복문은 행을, 안쪽 반복문은 해당 행의 각 열 요소를 순회합니다.

출력 방식은 두 가지입니다. 첫 번째는 행렬 전체를 중첩 리스트 형태 그대로 한 줄에 출력하는 방법이고, 두 번째는 함수 rowwise()를 정의하여 각 행을 별도의 줄로 나누어 출력하는 방법입니다. 상황에 따라 가독성 좋은 방식을 선택하면 됩니다.

마무리 및 추가 활용

지금까지 살펴본 내용은 행렬 선언, 데이터 요소 값 할당, 행렬 출력이라는 기본 연산입니다. 이러한 기본기를 바탕으로 전치(transpose) 같은 고급 연산도 특정 로직을 적용하여 쉽게 구현할 수 있습니다.

예를 들어 전치 행렬은 다음과 같이 한 줄로 구현할 수 있습니다.

transpose = [[matrix[j][i] for j in range(rows)] for i in range(col)]

또한 실무에서는 순수 파이썬 리스트보다 NumPy 라이브러리를 활용하는 것이 일반적입니다. NumPy의 np.array()np.matrix()를 사용하면 행렬 연산을 훨씬 빠르고 간결하게 처리할 수 있으니, 대규모 데이터를 다룰 때 참고하시기 바랍니다.