본문 바로가기
Python/numpy

numpy FloatingPointError: invalid value encountered in double_scalars 오류 해결하기

by PySun 2024. 10. 5.
반응형

소개

NumPy를 사용할 때 'FloatingPointError: invalid value encountered in double_scalars'라는 오류가 발생할 수 있습니다. 이 오류는 주로 나누기 연산에서 0으로 나누거나, NaN 또는 Inf와 같은 비정상적인 값이 연산에 포함될 때 발생합니다. 이번 블로그 글에서는 이 오류의 발생 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'FloatingPointError: invalid value encountered in double_scalars' 에러가 발생할 가능성이 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# 잘못된 나누기 연산
a = np.array([1, 2, 3])
b = np.array([0, 0, 0])

result = a / b
print(result)

에러 해결 방법

1. 나누기 연산 전에 제로 체크하기

나누기 연산을 수행하기 전에 분모가 0인지 확인하는 것이 좋습니다. 아래 예제와 같이 조건문을 사용하여 0으로 나누는 오류를 피할 수 있습니다.

import numpy as np

# 분모 경고 메시지 출력 및 처리
a = np.array([1, 2, 3])
b = np.array([0, 0, 0])

# 0으로 나누는 경우를 회피
with np.errstate(divide='ignore', invalid='ignore'):
    result = np.where(b != 0, a / b, np.nan)  # 0으로 나누는 경우 NaN 할당.

print(result)

2. NaN 및 Inf 값 확인

NaN이나 Inf 값이 포함된 배열이 있는지 확인하고, 이러한 값들을 적절하게 전처리하여 오류를 방지할 수 있습니다. 아래는 그런 예시입니다.

import numpy as np

# NaN 및 Inf 값이 포함된 배열
a = np.array([1, 2, np.nan])
b = np.array([1, 0, 2])

# 배열의 유효한 값만 계산
valid_indices = ~np.isnan(a) & ~np.isinf(a) & (b != 0)
result = np.zeros_like(a, dtype=float)
result[valid_indices] = a[valid_indices] / b[valid_indices]

print(result)

마무리

이번 블로그 글에서는 NumPy에서 'FloatingPointError: invalid value encountered in double_scalars' 에러에 대한 원인과 해결 방법을 살펴보았습니다. 배열 연산을 수행할 때는 항상 제로 체크를 하고, NaN 및 Inf 값들을 사전에 확인하여 안전하게 연산하는 습관을 기르는 것이 중요합니다. 이러한 에러를 피하며 더욱 안정적인 코드 작성을 돕기 위해 항상 주의해서 작업합시다!

반응형