欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python中Inf與Nan的判斷問題詳解

 更新時間:2017年02月08日 08:36:54   作者:Huoty  
這篇文章主要介紹了關(guān)于Python中Inf與Nan的判斷問題,文中介紹的很詳細(xì),對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。

大家都知道 在Python 中可以用如下方式表示正負(fù)無窮:

float("inf") # 正無窮
float("-inf") # 負(fù)無窮

利用 inf(infinite) 乘以 0 會得到 not-a-number(NaN) 。如果一個數(shù)超出 infinite,那就是一個 NaN(not a number)數(shù)。在 NaN 數(shù)中,它的 exponent 部分為可表達的最大值,即 FF(單精度)、7FF(雙精度)和 7FFF(擴展雙精度)。 NaN 數(shù)與 infinite 數(shù)的區(qū)別是:infinite 數(shù)的 significand 部分為 0 值(擴展雙精度的 bit63 位為 1);而 NaN 數(shù)的 significand 部分不為 0 值。

我們先看看如下的代碼:

>>> inf = float("inf")
>>> ninf = float("-inf")
>>> nan = float("nan")
>>> inf is inf
True
>>> ninf is ninf
True
>>> nan is nan
True
>>> inf == inf
True
>>> ninf == ninf
True
>>> nan == nan
False
>>> inf is float("inf")
False
>>> ninf is float("-inf")
False
>>> nan is float("nan")
False
>>> inf == float("inf")
True
>>> ninf == float("-inf")
True
>>> nan == float("nan")
False

如果你沒有嘗試過在 Python 中判斷一個浮點數(shù)是否為 NaN,對以上的輸出結(jié)果肯定會感到詫異。首先,對于正負(fù)無窮和 NaN 自身與自身用 is 操作,結(jié)果都是 True,這里好像沒有什么問題;但是如果用 == 操作,結(jié)果卻不一樣了, NaN 這時變成了 False。如果分別用 float 重新定義一個變量來與它們再用 is 和 == 比較,結(jié)果仍然出人意料。出現(xiàn)這種情況的原因稍稍有些復(fù)雜,這里就不贅術(shù)了,感興趣可以查閱相關(guān)資料。

如果你希望正確的判斷 Inf 和 Nan 值,那么你應(yīng)該使用 math 模塊的 math.isinf math.isnan 函數(shù):

>>> import math
>>> math.isinf(inf)
True
>>> math.isinf(ninf)
True
>>> math.isnan(nan)
True
>>> math.isinf(float("inf"))
True
>>> math.isinf(float("-inf"))
True
>>> math.isnan(float("nan"))
True

這樣便準(zhǔn)確無誤了。既然我在談?wù)撨@個問題,就是再忠告:不要在 Python 中試圖用 is 和 == 來判斷一個對象是否是正負(fù)無窮或者 NaN。你就乖乖的用 math 模塊吧,否則就是引火燒身。

當(dāng)然也有別的方法來作判斷,以下用 NaN 來舉例,但仍然推薦用 math 模塊,免得把自己弄糊涂。

用對象自身判斷自己

>>> def isnan(num):
...  return num != num
... 
>>> isnan(float("nan"))
True

用 numpy 模塊的函數(shù)

>>> import numpy as np
>>> 
>>> np.isnan(np.nan)
True
>>> np.isnan(float("nan"))
True
>>> np.isnan(float("inf"))
False

Numpy 的 isnan 函數(shù)還可以對整個 list 進行判斷:

>>> lst = [1, float("nan"), 2, 3, np.nan, float("-inf"), 4, np.nan]
>>> lst
[1, nan, 2, 3, nan, -inf, 4, nan]
>>> np.isnan(lst)
array([False, True, False, False, True, False, False, True], dtype=bool)

這里的 np.isnan 返回布爾值數(shù)組,如果對應(yīng)位置為 NaN,返回 True,否則返回 False。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • 基于Python的Houdini插件開發(fā)過程詳情

    基于Python的Houdini插件開發(fā)過程詳情

    這篇文章主要介紹了基于Python的Houdini插件開發(fā)過程詳情,Houdini是基于QT進行的開發(fā),支持?Python、HScript二種腳本進行插件開發(fā),下面文章介紹內(nèi)容,需要的朋友可以參考一下
    2022-02-02
  • Python命令行參數(shù)定義及需要注意的地方

    Python命令行參數(shù)定義及需要注意的地方

    這篇文章主要介紹了Python命令行參數(shù)定義及需要注意的地方,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Python通用循環(huán)的構(gòu)造方法實例分析

    Python通用循環(huán)的構(gòu)造方法實例分析

    這篇文章主要介紹了Python通用循環(huán)的構(gòu)造方法,結(jié)合實例形式分析了Python常見的交互循環(huán)、哨兵循環(huán)、文件循環(huán)、死循環(huán)等實現(xiàn)與處理技巧,需要的朋友可以參考下
    2018-12-12
  • Django配置Bootstrap, js實現(xiàn)過程詳解

    Django配置Bootstrap, js實現(xiàn)過程詳解

    這篇文章主要介紹了Django配置Bootstrap, js實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • pytorch繪制曲線的方法

    pytorch繪制曲線的方法

    這篇文章主要為大家詳細(xì)介紹了pytorch繪制曲線的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python 代碼性能優(yōu)化技巧分享

    Python 代碼性能優(yōu)化技巧分享

    選擇了腳本語言就要忍受其速度,這句話在某種程度上說明了 python 作為腳本的一個不足之處,那就是執(zhí)行效率和性能不夠理想,特別是在 performance 較差的機器上,因此有必要進行一定的代碼優(yōu)化來提高程序的執(zhí)行效率
    2012-08-08
  • python 刪除列表里所有空格項的方法總結(jié)

    python 刪除列表里所有空格項的方法總結(jié)

    下面小編就為大家分享一篇python 刪除列表里所有空格項的方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • PyTorch中常用的激活函數(shù)的方法示例

    PyTorch中常用的激活函數(shù)的方法示例

    這篇文章主要介紹了PyTorch中常用的激活函數(shù)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python實現(xiàn)快速排序的方法詳解

    Python實現(xiàn)快速排序的方法詳解

    這篇文章主要介紹了Python實現(xiàn)快速排序的方法,結(jié)合實例形式詳細(xì)分析了快速排序的思路、原理及Python具體實現(xiàn)技巧與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Python實現(xiàn)針對中文排序的方法

    Python實現(xiàn)針對中文排序的方法

    這篇文章主要介紹了Python實現(xiàn)針對中文排序的方法,結(jié)合實例形式較為詳細(xì)的分析了Python針對中文進行排序操作出現(xiàn)的問題與相關(guān)處理技巧,需要的朋友可以參考下
    2017-05-05

最新評論