본문 바로가기
Python/numpy

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

by PySun 2024. 10. 18.
반응형

소개

파이썬의 NumPy 라이브러리를 활용할 때 'ValueError: shapes (2,3) and (3,2) not aligned' 에러는 흔히 발생할 수 있는 문제입니다. 이 오류는 두 배열 간의 차원 또는 형태가 일치하지 않을 때 발생합니다. 이 글에서는 이 문제의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 위와 같은 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# 두 개의 행렬 생성
matrix_A = np.array([[1, 2, 3],
                      [4, 5, 6]])

matrix_B = np.array([[7, 8],
                      [9, 10],
                      [11, 12]])

# 행렬 곱셈 수행
result = np.dot(matrix_A, matrix_B)
print(result)

에러 해결 방법

1. 행렬의 형태 확인

행렬을 곱할 때, 첫 번째 행렬의 열 수와 두 번째 행렬의 행 수가 일치해야 합니다. 위의 예시에서 'matrix_A'는 2x3 형태이고, 'matrix_B'는 3x2 형태로, 곱셈은 가능하지만 코드에서는 size를 확인하는 부분이 필요합니다.

print("matrix_A shape:", matrix_A.shape)
print("matrix_B shape:", matrix_B.shape)

2. 행렬을 재구성하여 맞추기

행렬이 맞지 않아 에러가 발생할 경우, 행렬 형상을 조정하여 문제를 해결할 수 있습니다. 예를 들어, 'matrix_B'를 전치(transpose)하여 두 행렬의 곱셈이 가능하게 만들 수 있습니다.

import numpy as np

# 두 개의 행렬 생성
matrix_A = np.array([[1, 2, 3],
                      [4, 5, 6]])

matrix_B = np.array([[7, 9, 11],
                      [8, 10, 12]])

# 행렬 곱셈 수행
result = np.dot(matrix_A, matrix_B.T)  # matrix_B의 전치행렬 사용
print(result)

3. 배열의 차원에 대한 명확한 이해

NumPy에서의 배열 연산은 각각의 차원에 따라 유의미한 조작이 필요합니다. 행렬을 곱할 때는 항상 그 차원이 맞는지 확인하는 습관을 기르는 것이 중요합니다.

마무리

이 블로그에서는 NumPy에서 발생하는 'ValueError: shapes (2,3) and (3,2) not aligned' 에러에 대한 원인과 해결 방법을 살펴보았습니다. 올바른 행렬 연산을 위해서는 배열의 형태와 차원을 확인하고, 필요한 경우 전치 또는 재구성을 통해 문제를 극복할 수 있습니다. NumPy와 같은 강력한 도구를 사용할 때, 이러한 기본적인 원칙을 숙지하는 것이 큰 도움이 됩니다!

반응형