해결 방법: 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: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.