본문 바로가기
Python/numpy

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

by PySun 2024. 10. 12.
반응형

소개

NumPy를 사용할 때 'ValueError: shapes (3,4) and (4,5) not aligned' 오류가 발생하는 경우가 있습니다. 이는 행렬 곱셈이나 배열 연산을 수행할 때, 두 배열의 차원이 맞지 않아서 발생하는 에러입니다. 이번 블로그 글에서는 이 에러가 발생하는 이유와 이를 해결하는 방법을 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: shapes (3,4) and (4,5) not aligned' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# 3x4 행렬 생성
A = np.random.rand(3, 4)

# 4x5 행렬 생성
B = np.random.rand(4, 5)

# 행렬 곱셈 시도
result = np.dot(A, B)
print(result)

에러 해결 방법

1. 차원 확인하기

행렬 곱셈을 하려면 첫 번째 행렬의 열의 수가 두 번째 행렬의 행의 수와 같아야 합니다. 코드를 실행하기 전에 두 행렬의 차원을 확인하여 이 조건이 만족되는지 점검해보세요.

import numpy as np

A = np.random.rand(3, 4)
B = np.random.rand(4, 5)

print("A shape:", A.shape)
print("B shape:", B.shape)

2. 배열의 차원 조정하기

배열의 차원이 맞지 않다면, 배열의 형태를 조정할 수 있는 방법이 있습니다. 예를 들어, A의 열의 수를 맞추기 위해 B의 차원을 조정할 수 있습니다. 아래처럼 shape을 변경할 수 있습니다.

import numpy as np

A = np.random.rand(3, 4)
B = np.random.rand(5, 4)  # A의 열의 수와 B의 행의 수를 맞추기 위해 B의 shape을 변경

result = np.dot(A, B.T)  # B를 전치하여 연산
print(result)

3. 올바른 연산자 사용하기

또한, NumPy에서는 다양한 방법으로 행렬 연산을 수행할 수 있습니다. NumPy의 @ 연산자를 사용하여 행렬 곱셈을 수행할 수 있습니다. 이 경우에도 차원이 맞아야 합니다.

import numpy as np

A = np.random.rand(3, 4)
B = np.random.rand(4, 5)

result = A @ B  # @ 연산자를 사용한 행렬 곱셈
print(result)

마무리

이 블로그 글에서는 NumPy에서 발생하는 'ValueError: shapes (3,4) and (4,5) not aligned' 에러의 원인과 이를 해결하는 여러 방법을 살펴보았습니다. 배열의 차원을 확인하고, 전치하거나 적절한 연산자를 사용하는 것으로 이러한 오류를 극복할 수 있습니다. NumPy를 사용하는 과정에서 이러한 오류는 흔히 발생할 수 있으니, 차원에 유의하여 코드를 작성하는 것이 중요합니다.

반응형