넘파이 ValueError: Array must not contain infs or NaNs 오류 해결하기
소개
넘파이(Numpy)를 사용할 때 'ValueError: Array must not contain infs or NaNs' 오류는 자주 발생할 수 있습니다. 이 오류는 배열에 유한한 숫자가 아닌 무한대(inf) 혹은 비수치적 값(NaN)이 포함돼 있을 때 나타납니다. 이러한 오류는 데이터 처리 및 수치 연산을 수행할 때 큰 방해물이 될 수 있습니다. 이번 블로그 글에서는 이 오류의 원인과 해결 방법을 살펴보겠습니다.
에러 발생 예시 코드
먼저, 'ValueError: Array must not contain infs or NaNs' 에러가 발생할 수 있는 간단한 코드를 살펴봅시다.
import numpy as np
# 무한대와 NaN을 포함하는 배열 생성
data = np.array([1, 2, np.inf, 4, np.nan])
# 배열의 평균 계산 시도
mean_value = np.mean(data)
print(mean_value)
에러 해결 방법
1. 배열에서 무한대 및 NaN 값 제거하기
가장 간단한 해결책은 배열에서 무한대와 NaN 값들을 제거하는 것입니다. 이를 위해서는 'np.isnan()'과 'np.isfinite()' 함수 등을 사용하여 필터링할 수 있습니다.
import numpy as np
# 무한대와 NaN을 포함하는 배열 생성
data = np.array([1, 2, np.inf, 4, np.nan])
# 유한한 값만 추출
clean_data = data[np.isfinite(data)]
# 배열의 평균 계산
mean_value = np.mean(clean_data)
print(mean_value)
2. NaN과 무한대를 다른 값으로 대체하기
또 다른 방법은 NaN 값과 무한대를 0이나 평균값 같은 다른 값으로 대체하는 것입니다. 'np.nan_to_num()' 함수를 사용하여 쉽게 수행할 수 있습니다.
import numpy as np
# 무한대와 NaN을 포함하는 배열 생성
data = np.array([1, 2, np.inf, 4, np.nan])
# NaN과 무한대를 0으로 대체
clean_data = np.nan_to_num(data)
# 배열의 평균 계산
mean_value = np.mean(clean_data)
print(mean_value)
마무리
이번 블로그 글에서는 'ValueError: Array must not contain infs or NaNs' 오류의 원인과 이를 해결하는 몇 가지 방법을 살펴보았습니다. 배열에서 무한대와 NaN 값을 제거하거나 대체하는 방법을 사용하여 이러한 오류를 손쉽게 극복할 수 있습니다. 데이터 처리와 수치 연산을 수행할 때는 항상 데이터의 유효성을 점검하고, NumPy의 다양한 기능을 활용하여 더욱더 손쉬운 작업을 할 수 있습니다!