Czy można ustawić liczbę na NaN lub nieskończoność?
Czy Można ustawić element tablicy na NaN
w Pythonie?
Dodatkowo, czy można ustawić zmienną na + / - nieskończoność? Jeśli tak, to czy jest jakaś funkcja sprawdzająca, czy liczba jest nieskończona, czy nie?
4 answers
Oddane ze Sznurka za pomocą float()
:
>>> float('NaN')
nan
>>> float('Inf')
inf
>>> -float('Inf')
-inf
>>> float('Inf') == float('Inf')
True
>>> float('Inf') == 1
False
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-25 22:25:46
Tak, możesz użyć numpy
za to.
import numpy as np
a = arange(3,dtype=float)
a[0] = np.nan
a[1] = np.inf
a[2] = -np.inf
a # is now [nan,inf,-inf]
np.isnan(a[0]) # True
np.isinf(a[1]) # True
np.isinf(a[2]) # True
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-26 00:19:43
Czy Można ustawić element tablicy na NaN w Pythonie?
Tak, zawsze możesz umieścić NaN
lub inf
w Pythonie list
(i podobnych). Jeśli jednak chcesz umieścić go w array
(na przykład array.array
lub numpy.array
), to typ tablicy musi być float
lub complex
!
>>> import math
>>> import numpy as np
>>> arr = np.ones(1, float) # float array
>>> arr[0] = math.nan
>>> arr
array([ nan])
>>> [math.nan, math.inf, -math.inf] # python list
[nan, inf, -inf]
The math
-moduł zawiera stałe dla nan
i inf
(od Pythona 3.5) oraz niektóre funkcje (dostępne od Pythona 2.6) aby sprawdzić te:
math.isnan
sprawdza, czy wartość jest nan
:
>>> math.isnan(math.nan) # nan
True
math.isinf
sprawdza, czy wartość jest nieskończona (dodatnia lub ujemna):
>>> math.isinf(math.inf) # positive infinity
True
>>> math.isinf(-math.inf) # negative infinity
True
I funkcja, która może sprawdzić, czy liczba jest Nie inf
lub nan
: math.isfinite
(dostępne dla Pythona 3.2+)
>>> math.isfinite(math.inf)
False
>>> math.isfinite(math.nan)
False
>>> math.isfinite(11.2)
True
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-24 10:41:09
Podczas korzystania z Pythona 2.4 spróbuj
inf = float("9e999")
nan = inf - inf
Mam do czynienia z problemem, gdy portowałem simplejson do urządzenia wbudowanego, które uruchomiło Python 2.4, float("9e999")
naprawiono go. Nie używaj inf = 9e999
, musisz przekonwertować go z string.
-inf
daje -Infinity
.