Python/numpy

넘파이 ValueError: y must be a 1d array, got an array of shape (a,b) 오류 해결하기

PySun 2024. 10. 25. 09:21
반응형

소개

넘파이를 사용할 때 자주 발생할 수 있는 오류 중 하나는 'ValueError: y must be a 1d array, got an array of shape (a,b)'입니다. 이 오류는 주로 1차원 배열이 필요한 곳에 2차원 배열을 전달했을 때 발생합니다. 이 글에서는 이 오류의 주된 원인과 함께 해결하는 방법에 대해 이야기해보겠습니다.

에러 발생 예시 코드

아래는 'ValueError: y must be a 1d array, got an array of shape (a,b)' 오류가 발생할 수 있는 간단한 예제입니다.

import numpy as np
import matplotlib.pyplot as plt

# 2D 배열 생성
x = np.array([[1, 2], [3, 4]])
y = np.array([[1], [4]])

# 플롯ting 시도
plt.plot(x, y)
plt.show()

에러 해결 방법

1. 1D 배열로 변환하기

주어진 배열을 1차원 배열로 변환하여 이 오류를 해결할 수 있습니다. 이를 위해 NumPy의 ravel(), flatten(), 또는 인덱싱을 활용할 수 있습니다.

import numpy as np
import matplotlib.pyplot as plt

# 2D 배열 생성
x = np.array([[1, 2], [3, 4]])
y = np.array([[1], [4]])

# 1D 배열로 변환
y_1d = y.flatten()  # 또는 y.ravel()

# 플롯ting
plt.plot(x.flatten(), y_1d)  # x도 필요시 1D로 변환
plt.show()

2. 1D 배열 사용하기

아니면, 아예 1차원 배열을 사용하여 데이터를 정의할 수도 있습니다. 이 경우 오류가 발생하지 않습니다.

import numpy as np
import matplotlib.pyplot as plt

# 1D 배열 생성
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

# 플롯ting
plt.plot(x, y)
plt.show()

마무리

이번 글에서는 'ValueError: y must be a 1d array, got an array of shape (a,b)' 오류를 해결하는 방법에 대해 알아보았습니다. 1차원 배열이 필요한 상황에서 2차원 배열을 사용했기 때문에 발생하는 오류인 만큼, 배열을 적절하게 변환하거나 정의하는 것이 중요합니다. 오류 메시지가 발생했을 때는 원인을 명확히 파악하고, 필요한 형식으로 데이터를 조정하여 문제를 해결하는 것이 좋습니다. 넘파이를 효과적으로 활용해보세요!

반응형