Python RuntimeWarning:invalid value encountered in double_scalars處理
RuntimeWarning: invalid value encountered in double_scalars
在寫代碼計算類皮爾森相關系數(shù)的計算時遇到
如下警告:
RuntimeWarning: invalid value encountered in double_scalars
相關的代碼段如下
(在下面的語句的執(zhí)行過程中出現(xiàn)上述提示)
id_col=(t_fa*id_part).sum()/(item_squre_rating[id]*item_squre_rating[col])
首先要說明以下幾點
- 這是個警告提示(warning),而不是錯誤(Error)。所以在代碼運行時出現(xiàn)這個提示時,代碼仍然可以正常運行。但同時因為他不是錯誤,所以使用try-except是捕獲不了異常的。
- 出現(xiàn)這個提示一般是因為出現(xiàn)了0/0導致的。但是出現(xiàn)分母為0的情況時,沒有觸發(fā)ZeroDivisionError(0除異常),這一點也很意外。
- 解決方法:使用if-else語句判斷當分母為0時重新給id_col賦值。
下面來簡單看看ZeroDivisionError異常和RuntimeWarning警告之間的區(qū)別,以及在何種情況下會觸發(fā)這兩類提示。
- 當分母0的數(shù)據(jù)類型為內置數(shù)據(jù)類型時,可以觸發(fā)ZeroDivisionError異常
- 當分母0為numpy中的數(shù)據(jù)類型時,觸發(fā)RuntimeWarning警告。
- 當內置數(shù)據(jù)類型和numpy數(shù)據(jù)類型計算時,其計算結果的類型為numpy中的計算類型。
而我的代碼中之所以會出現(xiàn)RuntimeWarning提示,是因為分子部分計算的結果為numpy.float64類型,在進行計算式應該是將分子部分也改成了numpy.float64類型,所以除以0時也沒有報錯。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案
這篇文章主要介紹了Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08