最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

利用 inf(infinite) 乘以 0 會(huì)得到 not-a-number(NaN) 。如果一個(gè)數(shù)超出 infinite,那就是一個(gè) NaN(not a number)數(shù)。在 NaN 數(shù)中,它的 exponent 部分為可表達(dá)的最大值,即 FF(單精度)、7FF(雙精度)和 7FFF(擴(kuò)展雙精度)。 NaN 數(shù)與 infinite 數(shù)的區(qū)別是:infinite 數(shù)的 significand 部分為 0 值(擴(kuò)展雙精度的 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 中判斷一個(gè)浮點(diǎn)數(shù)是否為 NaN,對以上的輸出結(jié)果肯定會(huì)感到詫異。首先,對于正負(fù)無窮和 NaN 自身與自身用 is 操作,結(jié)果都是 True,這里好像沒有什么問題;但是如果用 == 操作,結(jié)果卻不一樣了, NaN 這時(shí)變成了 False。如果分別用 float 重新定義一個(gè)變量來與它們再用 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ù)撨@個(gè)問題,就是再忠告:不要在 Python 中試圖用 is 和 == 來判斷一個(gè)對象是否是正負(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ù)還可以對整個(gè) list 進(jìn)行判斷:

>>> 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如何新建三維數(shù)組并賦值

    Python如何新建三維數(shù)組并賦值

    本文詳細(xì)介紹了如何使用Python和numpy庫建立三維數(shù)組并對其進(jìn)行賦值。首先,通過numpy創(chuàng)建一個(gè)3x3x3的三維數(shù)組,其次,將自定義的二維數(shù)組賦值到三維數(shù)組中。本文還解釋了相關(guān)參數(shù)的含義,使讀者能夠更好地理解和應(yīng)用到其他多維矩陣的操作中
    2024-09-09
  • pytest生成簡單自定義測試結(jié)果的html報(bào)告

    pytest生成簡單自定義測試結(jié)果的html報(bào)告

    這篇文章主要為大家介紹了pytest生成簡單自定義測試結(jié)果html報(bào)告,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python中讀取txt文件時(shí)split()函數(shù)的妙用

    python中讀取txt文件時(shí)split()函數(shù)的妙用

    這篇文章主要介紹了python中讀取txt文件時(shí)split()函數(shù)的妙用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Tensorflow之構(gòu)建自己的圖片數(shù)據(jù)集TFrecords的方法

    Tensorflow之構(gòu)建自己的圖片數(shù)據(jù)集TFrecords的方法

    本篇文章主要介紹了Tensorflow之構(gòu)建自己的圖片數(shù)據(jù)集TFrecords的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python圖算法實(shí)例分析

    Python圖算法實(shí)例分析

    這篇文章主要介紹了Python圖算法,結(jié)合實(shí)例形式詳細(xì)分析了Python數(shù)據(jù)結(jié)構(gòu)與算法中的圖算法實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-08-08
  • 基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試

    基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試

    這篇文章主要介紹了基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試,在我們寫程序的時(shí)候,很容易遇到各種各樣的bug,然后編譯器提示程序出錯(cuò)的地方。很多時(shí)候可以通過提示的信息修改程序,但是有時(shí)我們想得到更多的信息,這個(gè)時(shí)候就需要進(jìn)行斷點(diǎn)調(diào)試,下面我們就一起來學(xué)習(xí)ycharm斷點(diǎn)調(diào)試
    2022-02-02
  • numpy.unique()使用方法

    numpy.unique()使用方法

    本文主要介紹了numpy.unique()使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python小紅書旋轉(zhuǎn)驗(yàn)證碼識別實(shí)戰(zhàn)教程

    Python小紅書旋轉(zhuǎn)驗(yàn)證碼識別實(shí)戰(zhàn)教程

    這篇文章主要介紹了Python小紅書旋轉(zhuǎn)驗(yàn)證碼識別實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-08-08
  • 還不知道Anaconda是什么?讀這一篇文章就夠了

    還不知道Anaconda是什么?讀這一篇文章就夠了

    Anaconda指的是一個(gè)開源的Python發(fā)行版本,其包含了Conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Anaconda是什么的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • python日志模塊logging案例詳解

    python日志模塊logging案例詳解

    日志模塊主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級、日志保存路徑、日志文件回滾等,這篇文章主要介紹了python日志模塊logging,需要的朋友可以參考下
    2024-01-01

最新評論

南澳县| 枣阳市| 成安县| 岚皋县| 亳州市| 宁晋县| 锡林郭勒盟| 原阳县| 沅江市| 揭西县| 冷水江市| 阳曲县| 广元市| 罗山县| 红桥区| 邯郸市| 诏安县| 文山县| 鄂托克前旗| 固安县| 宝应县| 慈利县| 兴仁县| 福清市| 金堂县| 西充县| 扶绥县| 张家界市| 乐清市| 福海县| 平邑县| 璧山县| 耒阳市| 肥东县| 客服| 东丰县| 革吉县| 江达县| 东海县| 称多县| 青州市|