Python RuntimeWarning:invalid value encountered in double_scalars處理
RuntimeWarning: invalid value encountered in double_scalars
在寫代碼計(jì)算類皮爾森相關(guān)系數(shù)的計(jì)算時(shí)遇到
如下警告:
RuntimeWarning: invalid value encountered in double_scalars
相關(guān)的代碼段如下
(在下面的語句的執(zhí)行過程中出現(xiàn)上述提示)
id_col=(t_fa*id_part).sum()/(item_squre_rating[id]*item_squre_rating[col])
首先要說明以下幾點(diǎn)
- 這是個(gè)警告提示(warning),而不是錯(cuò)誤(Error)。所以在代碼運(yùn)行時(shí)出現(xiàn)這個(gè)提示時(shí),代碼仍然可以正常運(yùn)行。但同時(shí)因?yàn)樗皇清e(cuò)誤,所以使用try-except是捕獲不了異常的。
- 出現(xiàn)這個(gè)提示一般是因?yàn)槌霈F(xiàn)了0/0導(dǎo)致的。但是出現(xiàn)分母為0的情況時(shí),沒有觸發(fā)ZeroDivisionError(0除異常),這一點(diǎn)也很意外。
- 解決方法:使用if-else語句判斷當(dāng)分母為0時(shí)重新給id_col賦值。
下面來簡單看看ZeroDivisionError異常和RuntimeWarning警告之間的區(qū)別,以及在何種情況下會觸發(fā)這兩類提示。
- 當(dāng)分母0的數(shù)據(jù)類型為內(nèi)置數(shù)據(jù)類型時(shí),可以觸發(fā)ZeroDivisionError異常

- 當(dāng)分母0為numpy中的數(shù)據(jù)類型時(shí),觸發(fā)RuntimeWarning警告。

- 當(dāng)內(nèi)置數(shù)據(jù)類型和numpy數(shù)據(jù)類型計(jì)算時(shí),其計(jì)算結(jié)果的類型為numpy中的計(jì)算類型。

而我的代碼中之所以會出現(xiàn)RuntimeWarning提示,是因?yàn)榉肿硬糠钟?jì)算的結(jié)果為numpy.float64類型,在進(jìn)行計(jì)算式應(yīng)該是將分子部分也改成了numpy.float64類型,所以除以0時(shí)也沒有報(bào)錯(cuò)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django中ajax發(fā)送post請求 報(bào)403錯(cuò)誤CSRF驗(yàn)證失敗解決方案
這篇文章主要介紹了Django中ajax發(fā)送post請求 報(bào)403錯(cuò)誤CSRF驗(yàn)證失敗解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python?中將數(shù)字轉(zhuǎn)換為字母的方法
本文詳細(xì)介紹了在 Python 中將數(shù)字轉(zhuǎn)換為字母的幾種常用方法,我們介紹了使用 chr() 函數(shù)、string 模塊和 ord() 函數(shù)等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,感興趣的朋友跟隨小編一起看看吧2023-06-06

