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),而不是錯誤(Error)。所以在代碼運(yùn)行時(shí)出現(xiàn)這個(gè)提示時(shí),代碼仍然可以正常運(yùn)行。但同時(shí)因?yàn)樗皇清e誤,所以使用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)錯。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Python的Flask框架中實(shí)現(xiàn)單元測試的教程
這篇文章主要介紹了在Python的Flask框架中實(shí)現(xiàn)單元測試的教程,屬于自動化部署的方面,可以給debug工作帶來諸多便利,需要的朋友可以參考下2015-04-04
python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程
這篇文章主要為大家介紹了python密碼學(xué)RSA算法及秘鑰創(chuàng)建教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Jupyter notebook之如何快速打開ipynb文件
這篇文章主要介紹了Jupyter notebook之如何快速打開ipynb文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
舉例講解Python設(shè)計(jì)模式編程的代理模式與抽象工廠模式
這篇文章主要介紹了Python編程的代理模式與抽象工廠模式,文中舉了兩個(gè)簡單的小例子來說明這兩種設(shè)計(jì)模式的思路在Python編程中的體現(xiàn),需要的朋友可以參考下2016-01-01
Python實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf效果
當(dāng)我們把word轉(zhuǎn)化為pdf,wps默認(rèn)轉(zhuǎn)化為文字pdf,而圖片pdf要會員。所以本文將通過Python語言實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf,需要的可以參考一下2022-04-04

