numpy 없이 python에서 변수 NaN 할당
대부분의 언어에는 변수에 값 NaN을 할당하는 데 사용할 수 있는 NaN 상수가 있습니다.파이썬이 numpy를 사용하지 않고 이것을 할 수 있습니까?
예 -- 사용합니다.
>>> from math import nan
>>> print(nan)
nan
>>> print(nan + 2)
nan
>>> nan == nan
False
>>> import math
>>> math.isnan(nan)
True
Python 3.5 이전 버전에서는float("nan")
(대소문자 구분 안 함).
NaN인 두 가지가 서로 동일한지 확인하는 것은 항상 false를 반환합니다.이것은 부분적으로 "숫자가 아닌" 두 가지가 서로 같다고 말할 수 없기 때문입니다. IEEE754 NaN 값에 대해 거짓을 반환하는 모든 비교의 근거는 무엇입니까?자세한 내용과 정보를 보려면 를 참조하십시오.
대신 값이 NaN인지 여부를 확인해야 하는 경우 사용합니다.
게다가, 정확한 의미론은==
NaN 값에 대한 작업은 다음과 같은 용기 유형 내부에 NaN을 저장하려고 할 때 미묘한 문제를 일으킬 수 있습니다.list
또는dict
(또는 사용자 정의 컨테이너 유형을 사용하는 경우).자세한 내용은 컨테이너에서 NaN 존재 확인을 참조하십시오.
Python의 소수 모듈을 사용하여 NaN 번호를 구성할 수도 있습니다.
>>> from decimal import Decimal
>>> b = Decimal('nan')
>>> print(b)
NaN
>>> print(repr(b))
Decimal('NaN')
>>>
>>> Decimal(float('nan'))
Decimal('NaN')
>>>
>>> import math
>>> math.isnan(b)
True
math.isnan(...)
Decimal 객체에서도 작동합니다.
그러나 Python의 분수 모듈에서는 NaN 숫자를 구성할 수 없습니다.
>>> from fractions import Fraction
>>> Fraction('nan')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 146, in __new__
numerator)
ValueError: Invalid literal for Fraction: 'nan'
>>>
>>> Fraction(float('nan'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 130, in __new__
value = Fraction.from_float(numerator)
File "C:\Python35\lib\fractions.py", line 214, in from_float
raise ValueError("Cannot convert %r to %s." % (f, cls.__name__))
ValueError: Cannot convert nan to Fraction.
덧붙여서, 당신은 또한 할 수 있습니다.float('Inf')
,Decimal('Inf')
또는 (3.5+)를 사용하여 무한한 숫자를 할당할 수 있습니다. (및 참조)
하지만 하는 중Fraction('Inf')
또는Fraction(float('inf'))
NaN과 마찬가지로 예외를 허용하지 않습니다.
숫자가 NaN도 무한하지 않은지 빠르고 쉽게 확인할 수 있는 방법을 원한다면 Python 3.2+ 기준으로 사용할 수 있습니다.
복잡한 숫자를 사용하여 유사한 검사를 수행하려면,cmath
모듈은 다음과 유사한 함수 및 상수 집합을 포함합니다.math
모듈:
cmath.isnan(...)
cmath.isinf(...)
cmath.isfinite(...)
(파이썬 3.2+)cmath.nan
(파이썬 3.6+; 동등)complex(float('nan'), 0.0)
)cmath.nanj
(파이썬 3.6+; 동등)complex(0.0, float('nan'))
)cmath.inf
(파이썬 3.6+; 동등)complex(float('inf'), 0.0)
)cmath.infj
(파이썬 3.6+; 동등)complex(0.0, float('inf'))
)
nan = float('nan')
이제 상수를 얻으셨군요nan
.
마찬가지로 10진수에 대한 NaN 값을 생성할 수 있습니다.십진수:
dnan = Decimal('nan')
사용하다float("nan")
:
>>> float("nan")
nan
"inf - inf"에서 NaN을 얻을 수 있고, 2e308보다 큰 숫자에서 "inf"를 얻을 수 있기 때문에, 저는 일반적으로 다음을 사용했습니다.
>>> inf = 9e999
>>> inf
inf
>>> inf - inf
nan
할수있습니다float('nan')
NaN을 얻기 위해.
inf와 -inf를 생성하는 더 일관된(그리고 덜 불투명한) 방법은 float()를 다시 사용하는 것입니다.
>> positive_inf = float('inf')
>> positive_inf
inf
>> negative_inf = float('-inf')
>> negative_inf
-inf
플로트의 크기는 아키텍처에 따라 다르므로 9e999와 같은 매직 넘버는 사용하지 않는 것이 좋습니다.
import sys
sys.float_info
sys.float_info(max=1.7976931348623157e+308,
max_exp=1024, max_10_exp=308,
min=2.2250738585072014e-308, min_exp=-1021,
min_10_exp=-307, dig=15, mant_dig=53,
epsilon=2.220446049250313e-16, radix=2, rounds=1)
언급URL : https://stackoverflow.com/questions/19374254/assigning-a-variable-nan-in-python-without-numpy
'programing' 카테고리의 다른 글
상위 구성 요소의 Ajax 업데이트에서 하위 구성 요소를 제외하는 방법은 무엇입니까? (0) | 2023.07.28 |
---|---|
CSS 16진수 RGBA? (0) | 2023.07.28 |
스크립트를 실행할 때 스크립트에 1064 오류가 발생하는 이유는 무엇입니까? (0) | 2023.07.23 |
Ionic 5 또는 캐패시터 5로 업그레이드한 후 TypeScript 컴파일에서 src/zone-flags.ts가 누락됨 (0) | 2023.07.23 |
"/", "\"?를 사용하는 플랫폼 독립 경로 연결 (0) | 2023.07.23 |