Python/numpy
numpy ValueError: Array shape not aligned in matmul 오류 해결하기
PySun
2024. 10. 11. 21:35
반응형
소개
NumPy를 사용하여 행렬을 곱하려고 할 때 'ValueError: shapes (x,y) and (z,w) not aligned: (x != z)'라는 오류가 발생할 수 있습니다. 이 오류는 행렬의 형태가 서로 맞지 않을 때 발생하며, 이는 종종 잘못된 모양의 배열을 사용하거나 행렬 곱셈에 대해 잘못된 차원을 제공할 때 일어납니다. 이번 블로그 글에서는 이 오류의 발생 원인과 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
먼저, 'ValueError'가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.
import numpy as np
# 2x3 행렬 생성
A = np.array([[1, 2, 3],
[4, 5, 6]])
# 2x2 행렬 생성
B = np.array([[1, 2],
[3, 4]])
# 행렬 곱 수행
C = np.matmul(A, B)
print(C)
에러 해결 방법
1. 행렬의 차원 확인하기
행렬 곱셈을 수행하기 전에 두 행렬의 모양을 확인하는 것이 좋습니다. 행렬 A의 열 수는 행렬 B의 행 수와 같아야 합니다. 이를 확인하기 위해 shape 속성을 활용할 수 있습니다.
import numpy as np
# 2x3 행렬 생성
A = np.array([[1, 2, 3],
[4, 5, 6]])
# 2x2 행렬 생성
B = np.array([[1, 2],
[3, 4]])
# 행렬의 형태 확인
print("A의 형태:", A.shape)
print("B의 형태:", B.shape)
2. 행렬 모양 조정하기
행렬을 올바르게 곱하려면 행렬의 차원을 변경해야 합니다. 예를 들어, 아래 코드는 B를 전치(transpose)하여 A와 곱할 수 있도록 만듭니다.
import numpy as np
# 2x3 행렬 생성
A = np.array([[1, 2, 3],
[4, 5, 6]])
# 3x2 행렬 생성 (전치된 형태)
B = np.array([[1, 3],
[2, 4],
[5, 6]])
# 행렬 곱 수행
C = np.matmul(A, B)
print("행렬 곱의 결과:\n", C)
마무리
이번 글에서는 NumPy의 행렬 곱셈에서 발생할 수 있는 'ValueError: shapes not aligned' 오류를 해결하기 위한 방법에 대해 알아보았습니다. 행렬의 차원을 확인하고 조정함으로써 이러한 오류를 피할 수 있습니다. NumPy를 사용할 때는 항상 배열의 크기와 차원에 주의하세요. 이를 통해 보다 원활한 작업 흐름을 유지할 수 있습니다.
반응형