728x90
RuntimeWarning: divide by zero encountered in divide
경고는 주로 NumPy 연산 중 0으로 나누는 경우 발생합니다. 이는 파이썬 내장 오류 ZeroDivisionError
처럼 예외로 처리되는 것이 아니라 경고(warning)로 표시되며, 해당 연산 결과는 inf
또는 nan
으로 반환됩니다.
이 경고는 대규모 배열 연산에서 특정 원소가 0일 때 나눗셈이 수행되면서 발생할 수 있으며, 경고를 무시하고 계산을 계속할 수도 있지만 결과가 수치적으로 의미 없을 수 있으므로 주의가 필요합니다.
● 경고 발생 예시
import numpy as np
x = np.array([1, 2, 0])
y = np.array([10, 20, 30])
result = y / x
위 코드에서 x
의 마지막 요소가 0이기 때문에 10/0
과 같은 연산이 발생하며 경고가 출력됩니다.
RuntimeWarning: divide by zero encountered in divide
● 해결 방법
- 0이 포함된 원소에 대해 사전 필터링
- NumPy의
np.seterr()
로 경고 설정 변경 np.where()
를 이용한 조건부 나눗셈 수행
● 예시 코드 (조건부 처리)
result = np.where(x != 0, y / x, 0)
● 자주 하는 실수
- 배열의 일부 원소가 0일 수 있다는 점을 고려하지 않음
- 불필요한 경고 메시지 무시로 인해 결과 해석 오류
np.inf
가 포함된 상태로 후속 계산 진행
● 결론
RuntimeWarning - divide by zero encountered in divide
는 배열 연산 중 0으로 나눌 때 발생하는 경고입니다. 이는 예외는 아니지만 잘못된 계산 결과로 이어질 수 있으므로 조건부 연산이나 필터링을 통해 미리 대응하는 것이 좋습니다.
728x90