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?

Author: nbro, 2011-03-26

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
 185
Author: marcog,
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
 56
Author: Olivier Verdier,
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
 8
Author: MSeifert,
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.

 1
Author: ,
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-02-01 00:54:26