Python에서 행렬 전치

Vaibhav Vaibhav 2023년1월30일
  1. Python에서 행렬 전치
  2. NumPy 모듈을 사용하여 Python에서 행렬 전치
Python에서 행렬 전치

행렬은 Python에서 다차원 목록을 사용하여 표현할 수 있습니다. 일단 표현되면 행렬 곱셈, 행렬 덧셈, 뺄셈과 같이 수학 이론에서 행렬에 대해 수행할 수 있는 모든 연산을 수행할 수 있습니다.

이 기사에서는 그러한 작업 중 하나에 대해 설명합니다. 몇 가지 관련 예제의 도움으로 Python을 사용하여 행렬을 전치하는 방법을 배웁니다.

Python에서 행렬 전치

Python에서 행렬을 전치하기 위해 간단한 스텁 함수를 작성하고 입력 행렬을 전치하기 위해 for 루프를 사용할 수 있습니다.

def transpose(matrix):
    if matrix == None or len(matrix) == 0:
        return []

    result = [[None for i in range(len(matrix))] for j in range(len(matrix[0]))]

    for i in range(len(matrix[0])):
        for j in range(len(matrix)):
            result[i][j] = matrix[j][i]

    return result


def print_matrix(matrix):
    for row in matrix:
        print(*row)


array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)

출력:

1 6 11
2 7 12
3 8 13
4 9 14
5 10 15

위 방법의 시간 및 공간 복잡도는 O(mn)이며, 여기서 m은 입력 행렬의 행 수이고 n은 입력 행렬의 열 수입니다.

전체 입력 행렬을 반복하기 때문에 시간 복잡도는 O(mn)입니다. 공간 복잡도는 입력 행렬의 복사본을 만들어 별도의 변수에 저장하기 때문에 O(mn)입니다.

위의 스텁 함수는 먼저 입력 행렬의 모양이 m x n인 경우 None 값을 사용하여 n x m 크기의 임시 행렬을 만듭니다. 여기서 m은 입력 행렬의 행 수이고 n은 입력 행렬의 열 수입니다.

다음으로 두 개의 중첩 for 루프를 사용하여 입력 행렬을 반복합니다. 두 개의 for 루프 내에서 None 값은 입력 행렬의 실제 값으로 대체됩니다(result[i][j] = matrix[j][i]). 마지막으로 임시 행렬이 출력으로 반환됩니다.

임시 행렬을 채우기 위해 두 개의 중첩 for 루프를 사용하는 대신 공간을 절약하기 위해 한 줄에 전치 논리를 작성할 수도 있습니다.

def transpose(matrix):
    if matrix == None or len(matrix) == 0:
        return []

    return [[matrix[i][j] for i in range(len(matrix))] for j in range(len(matrix[0]))]


def print_matrix(matrix):
    for row in matrix:
        print(*row)


array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)

출력:

1 6 11
2 7 12
3 8 13
4 9 14
5 10 15

이 솔루션의 시간 및 공간 복잡도도 이전 솔루션 O(mn)과 동일합니다.

NumPy 모듈을 사용하여 Python에서 행렬 전치

NumPy는 대규모 다차원 행렬 및 배열을 가지고 놀고 이에 대해 복잡하고 간단한 수학 연산을 수행하기 위한 유틸리티가 풍부한 Python 패키지입니다. 이러한 유틸리티는 입력에 대해 동적일 뿐만 아니라 고도로 최적화되고 빠릅니다.

Python의 NumPy 모듈을 사용하여 두 가지 방법으로 행렬을 전치할 수 있습니다. 첫 번째는 NumPy 어레이의 T 속성을 사용하는 것이고 두 번째는 NumPy 어레이의 transpose() 메서드를 호출하는 것입니다.

언급된 두 가지 방법을 사용하는 방법을 이해하려면 다음 Python 코드를 참조하십시오.

참고: 이 유틸리티를 사용하려면 먼저 numpy.array() 메서드를 사용하여 NumPy 배열의 입력 행렬을 변환해야 합니다. 이 방법에 대해 자세히 알아보려면 여기를 클릭하세요.

import numpy as np

array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
array = np.array(array)
print(array.T)  # First Method
print(array.transpose())  # Second Method

출력:

[[ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]
 [ 5 10 15]]
[[ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]
 [ 5 10 15]]

transpose()NumPy 배열에 대해 멋진 전치 수정을 수행하는 데 사용할 수 있는 axes 인수를 허용합니다. 이 방법에 대해 자세히 알아보려면 여기를 클릭하세요.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python Matrix