是否可以在Python中將數組的元素設置爲NaN
?python nan和inf值
此外,是否可以將變量設置爲+/-無窮大?如果是這樣,是否有任何功能來檢查一個數字是否無窮大?從字符串中使用float()
是否可以在Python中將數組的元素設置爲NaN
?python nan和inf值
此外,是否可以將變量設置爲+/-無窮大?如果是這樣,是否有任何功能來檢查一個數字是否無窮大?從字符串中使用float()
演員:
>>> float('NaN')
nan
>>> float('Inf')
inf
>>> -float('Inf')
-inf
>>> float('Inf') == float('Inf')
True
>>> float('Inf') == 1
False
這會教會我不要在第二次閱讀問題之前用簡單的方法跳進來!抱歉!也就是說,說這樣都不會有什麼不好,因爲這是一個容易陷入的陷阱,NaN!= NaN – 2011-03-25 22:30:23
也注意到:>>> float('Inf') - float('Inf')=== > nan – ntg 2014-09-02 16:04:56
當使用Python 2.4,嘗試
inf = float("9e999")
nan = inf - inf
我面臨的問題,當我端起了simplejson到運行的Python 2.4的嵌入式設備,float("9e999")
固定它。請勿使用inf = 9e999
,您需要將其從字符串轉換。 -inf
給出-Infinity
。
是否可以在Python中將數組的元素設置爲NaN?
是的,你總是可以包括在Python list
(以及類似的)一個NaN
或inf
。但是,如果要將其包含在array
(例如array.array
或numpy.array
)中,則陣列的類型必須爲爲float
或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]
的math
-module包含constants for nan
and inf
(since Python 3.5)以及一些功能(可用自Python 2.6中),以檢查這些:
math.isnan
檢查該值是否nan
:
>>> math.isnan(math.nan) # nan
True
math.isinf
檢查值是無窮大(正值還是負值):
>>> math.isinf(math.inf) # positive infinity
True
>>> math.isinf(-math.inf) # negative infinity
True
而且,可以檢查一個數是否爲不inf
或nan
功能:math.isfinite
(對於Python 3.2+)
>>> math.isfinite(math.inf)
False
>>> math.isfinite(math.nan)
False
>>> math.isfinite(11.2)
True
http://stackoverflow.com/questions/944700/告訴你如何檢查NaN。對於Inf和-Inf,您可以使用==進行測試,但由於NaN的IEEE754規則,對於NaN不起作用。 – 2011-03-25 22:27:00
我認爲最可靠的方法是使用像'numpy'提供的'isinf'和'isnan'這樣的函數。請參閱下面的答案。 – 2011-03-26 14:51:37