달나라 노트

Python numpy : T (전치 행렬, Transpose) 본문

Python/Python numpy

Python numpy : T (전치 행렬, Transpose)

CosmosProject 2022. 3. 13. 00:40
728x90
반응형

 

 

 

numpy는 행렬과 관련된 기능들을 제공합니다.

 

그 중에서 전치 행렬에 대해 알아봅시다.

 

위 이미지를 보시면 화살표 왼쪽에 있는 행렬과 오른쪽에 있는 행렬은 서로 전치 행렬 관계입니다.

 

왼쪽 행렬의 전치 행렬은 오른쪽 행렬이며,

오른쪽 행렬의 전치 행렬은 왼쪽 행렬입니다.

 

전치 행렬을 만드는법은 간단합니다.

 

행렬에 있는 모든 요소의 행, 열 위치를 반전시키면 됩니다.

 

왼쪽 행렬의 각 요소별 위치를 나타내보면 아래와 같습니다.

 

1 = 1행 1열 = (1, 1)

2 = 1행 2열 = (1, 2)

3 = 2행 1열 = (2, 1)

4 = 2행 2열 = (2, 2)

 

각 요소의 행, 열 위치를 모두 반전시켜보면 아래와 같습니다.

 

1 = 1행 1열 = (1, 1)

2 = 2행 1열 = (2, 1)

3 = 1행 2열 = (1, 2)

4 = 2행 2열 = (2, 2)

 

이렇게 전치 행렬이 만들어집니다.

위 요소들을 오른쪽 행렬과 비교하면 완전히 일치합니다.

 

 

 

 

 

왼쪽 행렬의 요소별 위치입니다.

 

1 = 1행 1열 = (1, 1)

2 = 1행 2열 = (1, 2)

3 = 1행 3열 = (1, 3)

4 = 2행 1열 = (2, 1)

5 = 2행 2열 = (2, 2)

6 = 2행 3열 = (2, 3)

7 = 3행 1열 = (3, 1)

8 = 3행 2열 = (3, 2)

9 = 3행 3열 = (3, 3)

 

왼쪽 행렬의 전치 행렬을 만들면 아래와 같습니다.

 

1 = 1행 1열 = (1, 1)

2 = 2행 1열 = (2, 1)

3 = 3행 1열 = (3, 1)

4 = 1행 2열 = (1, 2)

5 = 2행 2열 = (2, 2)

6 = 3행 2열 = (3, 2)

7 = 1행 3열 = (1, 3)

8 = 2행 3열 = (2, 3)

9 = 3행 3열 = (3, 3)

 

 

 

전치 행렬을 만드는 과정을 좀 더 직관적으로 이해해보면 

위처럼 대각선을 기준으로 행렬 속의 숫자들을 대칭해서 이동시키면 됩니다.

(대각선상에 놓인 요소들은 움직이지 않습니다.)

 

 

 

 

import numpy as np

test_array = np.array(
    [
        [1, 2],
        [3, 4]
    ]
)

print(test_array)
print(test_array.T)


-- Result
[[1 2]
 [3 4]]
 
[[1 3]
 [2 4]]

numpy에서는 전치 행렬을 아주 간단하게 만들 수 있습니다.

위처럼 어떠한 행렬에 T attribute를 이용하면 바로 전치 행렬을 얻을 수 있습니다.

 

 

 

다음은 여러 가지 형태의 행렬에 대한 전치 행렬을 출력해본 결과입니다.

import numpy as np

test_array = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)

print(test_array)
print(test_array.T)


-- Result
[[1 2 3]
 [4 5 6]
 [7 8 9]]
 
[[1 4 7]
 [2 5 8]
 [3 6 9]]

 

 

import numpy as np

test_array = np.array(
    [
        [1, 2, 3],
        [4, 5, 6]
    ]
)

print(test_array)
print(test_array.T)


-- Result
[[1 2 3]
 [4 5 6]]
 
[[1 4]
 [2 5]
 [3 6]]

 

 

import numpy as np

test_array = np.array(
    [
        [1, 2]
    ]
)

print(test_array)
print(test_array.T)


-- Result
[[1 2]]

[[1]
 [2]]

 

 

 

 

 

 

728x90
반응형
Comments