Python/numpy

numpy ValueError: shapes (3,4) and (2,3) not aligned 오류 해결하기

PySun 2024. 10. 5. 21:50
반응형

소개

파이썬의 NumPy 라이브러리에서 'ValueError: shapes (3,4) and (2,3) not aligned' 오류는 주로 행렬 곱셈을 시도할 때 발생합니다. 이러한 오류는 두 배열의 형상이 호환되지 않을 때 발생하며, 수학적으로 곱셈이 정의되지 않기 때문에 문제가 생깁니다. 이번 블로그 글에서는 이 오류의 원인과 해결 방법에 대해 살펴보도록 하겠습니다.

에러 발생 예시 코드

다음은 'ValueError: shapes (3,4) and (2,3) not aligned' 오류가 발생하는 간단한 예시 코드입니다.

import numpy as np

# 두 개의 배열 생성
a = np.random.rand(3, 4)  # 3x4 배열
b = np.random.rand(2, 3)  # 2x3 배열

# 행렬 곱셈 시도
result = np.dot(a, b)  # 여기서 오류 발생
print(result)

에러 해결 방법

1. 배열의 형상 확인하기

첫 번째 단계는 배열의 형상을 확인하여 행렬 곱셈을 수행할 수 있는지 여부를 판단하는 것입니다. NumPy에서 행렬 곱셈이 가능하려면 첫 번째 배열의 열 수가 두 번째 배열의 행 수와 같아야 합니다.

print("배열 a의 형상:", a.shape)
print("배열 b의 형상:", b.shape)

2. 배열 형상 조정하기

형상이 맞지 않을 경우, reshape를 사용하여 형상을 변경하여 곱셈을 수행할 수 있도록 할 수 있습니다.

b = np.random.rand(4, 2)  # 4x2 배열로 변경
result = np.dot(a, b)  # 바뀐 형상으로 행렬 곱셈
print(result)

3. 전치 행렬 사용하기

또한, 경우에 따라 하나의 행렬을 전치하여 형상을 맞출 수 있습니다. 이는 배열의 행과 열을 뒤바꿉니다.

b = np.random.rand(3, 2)  # 행을 3으로 변경
result = np.dot(a, b.T)  # b의 전치를 사용하여 곱셈
print(result)

마무리

이 블로그 글에서는 NumPy에서 발생하는 'ValueError: shapes (3,4) and (2,3) not aligned' 오류를 해결하기 위한 여러 방법에 대해 알아보았습니다. 배열의 형상을 확인하고 필요에 따라 reshape하거나 전치 행렬을 활용하여 오류를 해결할 수 있습니다. NumPy를 사용할 때는 배열의 형상에 주의하여 저런 오류를 예방하는 것이 중요합니다.

반응형