當我申請numpy.exp
爲數字數組我得到以下運行時警告:檢索數組元素導致運行時警告
RuntimeWarning: overflow encountered in exp
現在我知道,這個數組中的某個值造成的exp
結果溢出但我不知道哪一個(這個數組有數百萬個條目)。
有沒有辦法讓這個運行時警告更加冗長,從某種意義上說,它還顯示導致溢出的特定參數(更重要的是它在輸入數組中的位置)?我發現seterr和seterrcall但是他們似乎並沒有納入什麼導致錯誤(只有錯誤是關於什麼)。
我知道 - 遇到此警告後 - 我可以在陣列中分別通過每個價值exp
並觀看了警告或者,我可以用isfinite測試的exp(array)
的元素。然而,這意味着與實際代碼相混淆,而我更喜歡numpy在幕後執行此類事情(正確配置)。
編輯:我被要求張貼一些代碼,再現錯誤。那就是:
>>> import numpy
>>> array = numpy.zeros((10,), dtype=float)
>>> array[0] = 1.0e308
>>> numpy.exp(array)
__main__:1: RuntimeWarning: overflow encountered in exp
array([ inf, 1., 1., 1., 1., 1., 1., 1., 1., 1.])
我想知道,這是與指數0
導致溢出(不只是溢出發生的地方)的元素。
所有的值,可以發佈一些代碼嗎?你到現在爲止做了什麼? – Jarvis
我添加了一個可以重現場景的片段。 –
嘗試將'dtype = float'更改爲'dtype = float128'。 @a_guest – Jarvis