Python/Numpy

[Python] 파이썬 numpy 내적, 행렬곱, 전치행렬 - dot, matmul, transpose

나비🦋 2024. 4. 24. 18:29
반응형

안녕하세요! 나비입니다 🦋

이번 포스팅에서는 파이썬 numpy에서 행렬과 관련된 기본적인 연산 함수를 소개해 드리려고 합니다.

선형대수학, 행렬 연산에서 매우 자주 다루는 내적(dot product), 행렬곱(matrix product), 전치행렬(transpose) 연산 메소드를 아래서 차례대로 설명하겠습니다.

np.dot : 두 array의 내적을 반환합니다.
np.matmul : 두 array의 행렬곱을 반환합니다.
np.transpose : 입력된 행렬의 전치행렬을 반환합니다.

(내적, 행렬곱, 전치행렬에 대한 수학적 설명은 생략하겠습니다.)

np.dot

import numpy as np

a = np.dot(2,3)
A = np.dot([1,2], [3,4])
B = np.dot([1,2,3], [4,5,6])

print(a)
print(A)
print(B)
6
11
32

dot 메소드는 2개의 인수를 요구합니다.

두 개의 실수를 입력한다면, 실수끼리 곱한 값을 반환합니다.
1차원 벡터를 입력한 경우, 두 벡터의 내적(dot product)를 반환합니다.
1차원 벡터의 원소 개수에는 특별한 제한이 없습니다.


np.matmul

import numpy as np

A = np.array([[1,0],[0,1]])
B = np.array([[4,1],[2,2]])

print(np.matmul(a,b))
[[4, 1]
 [2, 2]]

matmul 메소드의 경우, 행렬 또는 벡터 간 행렬곱을 수행합니다. 따라서 출력값은 행렬 또는 벡터입니다.

두 행렬의 곱셈이 수학적으로 가능하기만 하다면, 행렬의 크기와 차원에는 특별한 제한은 없습니다.


np.transpose

import numpy as np

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

print(np.transpose(A))
[[1,4,7]
 [2,5,8]
 [3,6,9]]

위 예시처럼, 입력된 행렬의 전치행렬을 반환합니다.

여기서는 3x3 matrix만 보여드렸지만, 행과 열의 개수가 다를 경우에도 전치행렬 연산을 적용할 수 있으며, numpy 라이브러리는 이를 지원합니다.

















반응형