본문 바로가기
Python/numpy

numpy ValueError: shapes (x,y) and (y,z) not aligned 오류 해결하기

by PySun 2024. 10. 9.
반응형

소개

파이썬의 과학 컴퓨팅 라이브러리인 NumPy를 사용할 때, 'ValueError: shapes (x,y) and (y,z) not aligned'라는 오류는 꽤 흔하게 발생하는 문제입니다. 이 오류는 종종 두 개의 배열을 곱할 때 차원이 맞지 않거나, 배열의 형태가 일치하지 않을 때 나타납니다. 오늘은 이러한 오류가 발생하는 원인과 해결 방법에 대해 자세히 알아보겠습니다.

에러 발생 예시 코드

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

import numpy as np

# 두 개의 배열 생성
A = np.array([[1, 2, 3], [4, 5, 6]])  # shape: (2, 3)
B = np.array([[7, 8], [9, 10]])        # shape: (2, 2)

# 배열 곱하기
result = np.dot(A, B)
print(result)

에러 해결 방법

1. 배열의 차원 확인

그래서 먼저 각 배열의 차원을 확인해 보세요. 배열 A는 (2, 3)이고 배열 B는 (2, 2)이므로, A의 열 수(3)와 B의 행 수(2)가 일치하지 않습니다. 배열의 형태를 맞춰야 합니다.

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

2. 배열의 형태 조정

두 배열의 곱셈을 하려면, B의 형태를 (3, 2)로 조정하는 것이 필요합니다. 예를 들어, B 배열을 전치(transpose)하여 형태를 맞출 수 있습니다.

B = B.T  # B의 전치
result = np.dot(A, B)
print(result)

3. 올바른 행렬 곱 연산 사용

또한, NumPy의 행렬 곱 연산을 사용할 때는 @ 연산자를 사용할 수도 있습니다. 아래는 그 방법입니다.

result = A @ B  # 행렬 곱
print(result)

마무리

오늘 우리는 NumPy에서 발생하는 'ValueError: shapes (x,y) and (y,z) not aligned' 오류의 원인과 해결 방법에 대해 알아보았습니다. 주의 깊게 각 배열의 형태를 확인하고, 필요할 경우 전치(transpose)나 reshape을 활용하여 행렬의 차원을 맞추는 방법으로 문제를 해결할 수 있습니다. NumPy를 사용할 때는 항상 배열의 형상이 올바른지 확인하는 것이 중요하며, 이러한 오류를 예방할 수 있습니다.

반응형