float('nan')
Nan (숫자가 아님)이됩니다. 그러나 어떻게 확인합니까? 매우 쉬워야하지만 찾을 수 없습니다.
답변
반환
True
x는 NaN (숫자), 및 경우False
그렇지.
>>> import math
>>> x = float('nan')
>>> math.isnan(x)
True
답변
NaN을 테스트하는 일반적인 방법은 그것이 자신과 같은지 확인하는 것입니다.
def isNaN(num):
return num != num
답변
numpy.isnan(number)
NaN
그렇지 않은 경우 알려줍니다 .
답변
변수를 테스트 할 수있는 세 가지 방법은 “NaN”입니다.
import pandas as pd
import numpy as np
import math
#For single variable all three libraries return single boolean
x1 = float("nan")
print(f"It's pd.isna : {pd.isna(x1)}")
print(f"It's np.isnan : {np.isnan(x1)}")
print(f"It's math.isnan : {math.isnan(x1)}")
산출
It's pd.isna : True
It's np.isnan : True
It's math.isnan : True
답변
다음은 작업에 대한 답변입니다.
- IEEE 754 표준을 고려한 NaN 구현
- 즉 : 파이썬의 NaN :
float('nan')
,numpy.nan
…
- 즉 : 파이썬의 NaN :
- 다른 객체 : 문자열 또는 무엇이든 (만약 예외가 발생하지 않으면)
표준에 따라 구현 된 NaN은 부등식 비교 자체와 True를 반환해야하는 유일한 값입니다.
def is_nan(x):
return (x != x)
그리고 몇 가지 예 :
import numpy as np
values = [float('nan'), np.nan, 55, "string", lambda x : x]
for value in values:
print(f"{repr(value):<8} : {is_nan(value)}")
산출:
nan : True
nan : True
55 : False
'string' : False
<function <lambda> at 0x000000000927BF28> : False
답변
나는 실제로 이것에 부딪쳤다. 그러나 나를 위해 그것은 nan, -inf 또는 inf를 점검하고 있었다. 방금 사용한
if float('-inf') < float(num) < float('inf'):
이것은 숫자에 해당되고 nan과 inf에 대해서는 false이며 문자열 또는 다른 유형 (아마도 좋은 것)에 대한 예외가 발생합니다. 또한 이것은 math 또는 numpy와 같은 라이브러리를 가져올 필요가 없습니다 (numpy는 너무 커서 컴파일 된 응용 프로그램의 크기를 두 배로 늘립니다).