본문 바로가기
Python/numpy

NumPy ValueError: operands could not be broadcast together with shapes (2,) (3,) 오류 해결하기

by PySun 2024. 10. 14.
반응형

소개

NumPy에서 'ValueError: operands could not be broadcast together with shapes (2,) (3,)' 에러는 주로 두 개의 배열 사이에서 연산을 수행할 때 이 배열들이 서로 다른 모양을 가지는 경우에 발생합니다. 배열의 차원이나 크기가 서로 다를 때, 이러한 연산을 수행할 수 없기 때문에 발생하는 에러입니다. 이번 블로그 글에서는 이 문제의 발생 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: operands could not be broadcast together with shapes (2,) (3,)' 에러가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import numpy as np

# 두 개의 다른 길이를 가진 배열 생성
array1 = np.array([1, 2])  # shape (2,)
array2 = np.array([3, 4, 5])  # shape (3,)

# 두 배열의 합산 시도
result = array1 + array2
print(result)

에러 해결 방법

1. 배열의 모양을 일치시키기

가장 간단한 방법은 두 배열의 크기를 동일하게 맞추는 것입니다. 예를 들면, 하나의 배열을 다른 배열의 크기에 맞춰 확장하는 방식입니다. 이를 위해 'np.resize' 또는 'np.pad'를 사용할 수 있습니다.

import numpy as np

# 배열의 정렬 길이를 일치시키기
array1 = np.array([1, 2])  # shape (2,)
array2 = np.array([3, 4, 5])  # shape (3,)

# array1의 크기를 array2의 크기로 맞추기
array1_resized = np.resize(array1, array2.shape)
result = array1_resized + array2
print(result)

2. 배열의 형태 변형하기

배열의 형태를 변경하여 연산을 가능하게 할 수도 있습니다. 예를 들어, 배열을 각각 2차원으로 변경 후 브로드캐스트 기능을 활용해 연산을 수행할 수 있습니다.

import numpy as np

# 서로 다른 배열 생성
array1 = np.array([1, 2])  # shape (2,)
array2 = np.array([3, 4, 5])  # shape (3,)

# 배열 형태를 변경하여 추가 연산
result = array1.reshape(-1, 1) + array2.reshape(1, -1)
print(result)

마무리

이번 블로그 글에서는 NumPy에서 'ValueError: operands could not be broadcast together with shapes (2,) (3,)' 에러를 해결할 수 있는 다양한 방법을 살펴보았습니다. 배열의 모양을 일치시키거나, 배열의 형태를 변형하여 연산을 가능하게 함으로써 이러한 오류를 극복할 수 있습니다. NumPy를 사용할 때는 항상 배열의 크기와 형태에 주의를 기울여야 하며, 먼저 배열의 모양을 확인하는 것이 좋습니다.

반응형