Python에서 행렬 곱셈 수행하는 방법
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- NumPy는 행렬 곱셈을 위한 효율적이고 간결한 도구를 제공합니다.
@
연산자는 행렬 곱셈을 위한 깔끔하고 현대적인 구문입니다.- 유효한 행렬 차원은 성공적인 곱셈에 필수적입니다.
행렬 곱셈은 선형 대수학에서 기본적인 연산이며 데이터 과학, 머신 러닝, 컴퓨터 그래픽스 및 과학 컴퓨팅과 같은 분야에서 널리 사용됩니다. Python은 행렬 곱셈을 효율적이고 정확하게 수행할 수 있는 여러 방법과 라이브러리를 제공합니다.
이 기사에서는 기본적인 리스트 comprehension부터 NumPy와 같은 강력한 라이브러리를 사용하여 Python에서 행렬 곱셈을 수행하는 다양한 방법을 안내합니다.
1. 행렬 곱셈의 기본
행렬 곱셈은 요소별 곱셈과 동일하지 않습니다. 두 행렬 A와 B를 곱하려면 A의 열 수가 B의 행 수와 일치해야 합니다. 결과 행렬 C는 A와 동일한 수의 행과 B와 동일한 수의 열을 갖습니다.
2. 중첩 루프 사용 (순수 Python)
두 행렬을 곱하는 가장 간단한 방법은 중첩 루프를 사용하는 것입니다.
def matrix_multiply(A, B): result = [[0 for _ in range(len(B[0]))] for _ in range(len(A))] for i in range(len(A)): for j in range(len(B[0])): for k in range(len(B)): result[i][j] += A[i][k] * B[k][j] return result # Example A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]] print(matrix_multiply(A, B)) # Output: [[19, 22], [43, 50]]
이 방법은 작동하지만 큰 행렬에는 효율적이지 않으며 버그가 발생하기 쉽습니다.
3. NumPy의 dot()
함수 사용
NumPy는 수치 계산을 위한 널리 사용되는 Python 라이브러리입니다. dot()
함수는 빠르고 간결한 행렬 곱셈을 가능하게 합니다.
import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) C = np.dot(A, B) print(C) # Output: [[19 22] # [43 50]]
이 방법은 효율적이고 읽기 쉬우므로 대부분의 경우 선호되는 선택입니다.
4. @
연산자 사용
Python 3.5 이상에서는 @
연산자가 행렬 곱셈을 위한 편리한 구문으로 도입되었습니다.
import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) C = A @ B print(C) # Output: [[19 22] # [43 50]]
이 연산자는 np.matmul()
또는 np.dot()
과 동일하며 깔끔하고 간결한 코드를 작성하는 데 이상적입니다.
5. NumPy의 matmul()
함수 사용
matmul()
은 dot()
과 유사하게 동작하지만 broadcasting 및 고차원 배열에 대한 더 나은 지원을 제공합니다.
import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) C = np.matmul(A, B) print(C) # Output: [[19 22] # [43 50]]
텐서 또는 행렬 배치를 다룰 때 matmul()
을 사용하세요.
6. 모범 사례
- 성능을 위해 순수 Python 루프보다 NumPy를 선호하십시오.
- 가독성을 위해
@
연산자 또는np.matmul()
을 사용하십시오. - 곱셈 전에 항상 행렬의 모양 호환성을 확인하십시오.
결론
Python에서 행렬 곱셈은 기본 루프 또는 NumPy와 같은 더 효율적인 도구를 사용하여 수행할 수 있습니다. 대부분의 실제 응용 프로그램에서는 NumPy의 내장 함수 또는 @
연산자를 사용하는 것이 가장 효과적이고 안정적인 접근 방식입니다.
기본 선형 대수를 수행하든 머신 러닝 모델을 구축하든 행렬 연산을 마스터하는 것은 필수적이며 Python은 이를 접근 가능하고 강력하게 만듭니다.
FAQs
둘 다 행렬 곱셈을 수행하지만 @
가 Python 3.5+에서 더 깔끔하고 읽기 쉽습니다.
NumPy는 성능에 최적화되어 있으며 코드 복잡성을 줄입니다.
아니요, 첫 번째 행렬의 열 수는 두 번째 행렬의 행 수와 일치해야 합니다.
Leapcell은 Python 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하십시오. 요청이나 요금이 없습니다.
타의 추종을 불허하는 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리하도록 자동 확장.
- 운영 오버헤드가 없어 구축에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ