본문 바로가기
Python/numpy

넘파이 ValueError: shapes (x,y) not aligned: (m,n) + (p,q) 오류 해결하기

by PySun 2024. 10. 25.
반응형

소개

파이썬에서 NumPy를 사용할 때 'ValueError: shapes (x,y) not aligned: (m,n) + (p,q)' 오류는 자주 만나게 되는 오류 중 하나입니다. 이 오류는 두 배열의 형태가 합쳐질 수 없음을 나타냅니다. 즉, 벡터 연산이나 행렬 연산을 수행하려고 할 때 배열의 크기가 맞지 않는 경우 발생합니다. 이 블로그 글에서는 이 오류가 발생하는 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: shapes (x,y) not aligned: (m,n) + (p,q)' 에러가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import numpy as np

# 두 개의 배열 생성
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[1, 2], [3, 4]])

# 배열 더하기
result = a + b
print(result)

에러 해결 방법

1. 배열의 형태 확인하기

먼저, 두 배열의 형태를 확인하고, 일치하는지 확인하는 것이 좋습니다. 이를 위해 'shape' 속성을 사용합니다.

print(f"a의 shape: {a.shape}")
print(f"b의 shape: {b.shape}")

2. 배열의 크기 맞추기

만약 두 배열의 차원이 일치하지 않는다면, 적절한 방식으로 배열의 형태를 맞춰야 합니다. 예를 들어, 'b' 배열의 형태를 'a' 배열의 형태와 맞춰주기 위해 np.reshape() 함수를 사용할 수 있습니다.

b = np.array([[1, 2], [3, 4], [5, 6]])  # (3, 2) 모양으로 조정
result = a + b
print(result)

3. 브로드캐스팅 활용하기

또한, 두 배열의 크기를 맞출 수 없을 경우 브로드캐스팅을 활용하여 연산을 수행할 수도 있습니다. 예를 들어, 1차원 배열을 2차원 배열에 덧셈할 수 있습니다.

b = np.array([1, 2, 3])  # (3,) 모양의 1D 배열
result = a + b  # 브로드캐스팅 활용
print(result)

마무리

이 블로그 글에서는 NumPy에서 발생하는 'ValueError: shapes (x,y) not aligned: (m,n) + (p,q)' 오류에 대한 간단한 해결 방법을 살펴보았습니다. 배열의 형태를 확인하고, 필요하다면 배열의 크기를 조정하거나 브로드캐스팅을 활용함으로써 이 오류를 극복할 수 있습니다. NumPy를 사용할 때는 항상 배열의 차원과 형태를 주의 깊게 살펴보는 것이 중요합니다.

반응형