해결 방법: true_divide에서 잘못된 값이 발견되었습니다.


NumPy를 사용할 때 발생할 수 있는 경고 중 하나는 다음과 같습니다.

 RuntimeWarning : invalid value encountered in true_divide

이 경고는 NumPy 배열에서 잘못된 값(예: NaN, Inf 등)으로 나누려고 할 때 발생합니다.

이는 단지 경고 일 뿐이며 NumPy는 유효하지 않은 값으로 나누려고 시도할 때 단순히 nan 값을 반환한다는 점에 유의해야 합니다.

다음 예에서는 실제로 이 경고에 대응하는 방법을 보여줍니다.

오류를 재현하는 방법

하나의 NumPy 배열의 값을 다른 NumPy 배열의 값으로 나누려고 한다고 가정해 보겠습니다.

 import numpy as np

#define NumPy arrays
x = np. array ([4, 5, 5, 7, 0])
y = np. array ([2, 4, 6, 7, 0])

#divide the values in x by the values in y
n.p. divide (x,y)

array([2., 1.25, 0.8333, 1., no])

RuntimeWarning : invalid value encountered in true_divide

NumPy는 각 x 값을 해당 y 값으로 나누지만 RuntimeWarning이 생성됩니다.

이는 수행된 마지막 나누기 연산이 0을 0으로 나눈 결과 nan 값이 나왔기 때문입니다.

이 경고에 대응하는 방법

앞서 언급했듯이 이 RuntimeWarning은 경고 일 뿐이며 코드 실행을 방해하지 않습니다.

그러나 이러한 유형의 경고를 표시하지 않으려면 다음 구문을 사용할 수 있습니다.

 n.p. seterr (invalid=' ignore ')

이는 NumPy에게 “잘못된” 메시지가 포함된 경고를 숨기도록 지시합니다.

따라서 코드를 다시 실행하면 경고가 표시되지 않습니다.

 import numpy as np

#define NumPy arrays
x = np. array ([4, 5, 5, 7, 0])
y = np. array ([2, 4, 6, 7, 0])

#divide the values in x by the values in y
n.p. divide (x,y)

array([2., 1.25, 0.8333, 1., no])

출력의 마지막 값에 대해 여전히 nan 값이 반환되지만 이번에는 경고 메시지가 표시되지 않습니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

Pandas에서 KeyError를 수정하는 방법
해결 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다