這篇文章主要介紹了關於Python中Inf與Nan的判斷問題,文中介紹的很詳細,對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
大家都知道 在Python 中可以用以下方式表示正負無窮:
float("inf") # 正无穷 float("-inf") # 负无穷
利用 inf(infinite)
乘以 0 會得到 not-a-n(NN(Naumber)。如果一個數字超出 infinite,那就是一個
NaN(not a number)數。在 NaN 數中,它的 exponent 部分為可表達的最大值,即 FF(單精度)、7FF(雙精度)和 7FFF(擴展雙精度)。 NaN 數與 infinite 數的差異是:infinite 數的 significand 部分為 0 值(擴展雙精確度的 bit63 位元為 1);而 NaN 數的 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 中判斷一個浮點數是否為 NaN,對以上的輸出結果肯定會感到詧異。首先,對於正負無窮和 NaN 自身與自身用 is 操作,結果都是 True,這裡好像沒有什麼問題;但是如果用 == 操作,結果卻不一樣了, NaN 這時變成了 False。如果分別用 float 重新定義一個變數來與它們再用 is 和 == 比較,結果仍然出乎意料。造成這種情況的原因稍微複雜,這裡就不贅術了,有興趣查閱相關資料。 如果你希望正確的判斷 Inf 和 Nan 值,那麼你應該使用 math 模組的
math.isinf 和
math.isnan 函數:
>>> 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
。既然我在談論這個問題,那就是再忠告:不要在 Python 中試圖用 is 和 == 來判斷一個物件是否是正負無窮或 NaN。你就乖乖的用 math 模組吧,否則就是引火燒身。
當然也有別的方法來做判斷,以下用 NaN 來舉例,但仍然推薦用 math 模組,免得把自己弄糊塗。
用物件來判斷自己>>> def isnan(num): ... return num != num ... >>> isnan(float("nan")) True用numpy 模組的函數
>>> import numpy as np >>> >>> np.isnan(np.nan) True >>> np.isnan(float("nan")) True >>> np.isnan(float("inf")) False這裡的
np.isnan
返回布林值數組,如果對應位置為NaN,返回True,否則返回False。更多關於Python中Inf與Nan的判斷問題詳解相關文章請關注PHP中文網!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具