numpy ValueError: shapes (3,4) and (2,3) not aligned 오류 해결하기
소개
파이썬의 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를 사용할 때는 배열의 형상에 주의하여 저런 오류를 예방하는 것이 중요합니다.