Python 행렬 곱셈 코드
종속성 없이 순수 Python에서 행렬 곱셈을 수행합니다. 중첩 루프와 최적화된 구조를 비교해 보세요.
개요
행렬 곱셈은 선형 대수학, 컴퓨터 그래픽 및 기계 학습의 기본적인 수학 연산입니다. 여기에는 두 개의 행렬을 취하고 행과 열의 내적을 계산하여 세 번째 행렬을 생성하는 작업이 포함됩니다.
행렬 A와 행렬 B를 곱하려면 A의 열 개수가 B의 행 개수와 같아야 합니다. 결과 행렬은 A의 행과 B의 열 차원을 갖습니다.
순수 Python에서는 세 개의 중첩 루프를 사용하여 행렬 곱셈을 구현합니다. 작성하기 쉽지만 이 O(n³) 작업은 느리기 때문에 데이터 과학자는 프로덕션에서NumPy와 같은 특수 라이브러리 엔진을 사용합니다.
코드 및 실행 출력
중첩 루프와 목록 이해를 사용한 순수 Python 행렬 곱셈입니다.
matrix_mult.py
에디터에서 사용해 보세요def multiply_matrices(A, B):
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
if cols_A != rows_B:
raise ValueError("Cannot multiply: column size of A must match row size of B.")
# Initialize result matrix with zeros
result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# Iterate through rows of A
for i in range(rows_A):
# Iterate through columns of B
for j in range(cols_B):
# Iterate through rows of B (or columns of A)
for k in range(cols_A):
result[i][j] += A[i][k] * B[k][j]
return result
# 2x3 Matrix A
matrix_A = [
[1, 2, 3],
[4, 5, 6]
]
# 3x2 Matrix B
matrix_B = [
[7, 8],
[9, 10],
[11, 12]
]
print("Matrix A (2x3):", matrix_A)
print("Matrix B (3x2):", matrix_B)
res = multiply_matrices(matrix_A, matrix_B)
print("Product (2x2):", res)터미널 출력
Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]단계별 구현
- 수학적 그래픽 렌더링 및 좌표 회전
- 단순 인공신경망 레이어 내적
- 알고리즘 구조 및 중첩 루프 이해
자주 묻는 질문
NumPy가 행렬 곱셈을 훨씬 더 빠르게 수행하는 이유는 무엇입니까?
NumPy은 C로 작성되었으며 고도로 최적화된 BLAS/LAPACK 라이브러리를 활용합니다. 표준 Python 루프에서는 수행할 수 없는 벡터화, CPU 캐시 최적화 및 병렬 실행을 활용합니다.
Python의 `@` 연산자는 무엇입니까?
Python 3.5부터 `@` 기호가 행렬 곱셈을 위한 전용 중위 연산자로 도입되어 numpy 배열을 사용할 때 `A @ B`를 실행할 수 있습니다.