2017-06-26 97 views
0

我試圖定義一個簡單的指數也不管我投入指數這一論點的數字,我得到以下的溢遇到m試圖定義如下:NumPy的錯誤:</p> <p><code>FloatingPointError: underflow encountered in exp</code></p> <p>的陣列I」:在進出口

 time = np.arange(length) 
    window = np.exp(-(time-512)**2/1000.0) 

其中length = 4096。我對Python沒有經驗,看到類似的問題在這裏得到解答,但我並不真正瞭解它。我還應該注意,這個代碼之前運行沒有問題。

+0

你確定你不想'1000 ** 2'而不是'1000'嗎?考慮到你正在使用的值的大小,「1000」的因素看起來不太可能。 –

回答

2

細分你計算什麼的最後一個元素:

temp1 = 4096 - 512 
temp2 = temp1**2 
temp3 = -temp2 
temp4 = temp3/1000.0 

temp4是-12845.056

現在,會發生什麼,當你嘗試走天然抗日誌號的? numpy允許的float值的範圍是多少?

我相信你會發現你只是試圖讓它太小。如果這是一個計算的中間結果,我建議你把這個數字作爲一個自然對數,直到你可以再次變大。或者,研究一些軟件包以支持極端值,或將所有值乘以足夠大的標量以保持精確度。

+0

謝謝!我很困惑,因爲代碼在一個文件夾中沒有任何錯誤消息運行,但我有一個父目錄中的筆記本副本。父目錄中的一個給我提出問題。我在發佈這個問題之前和之後都試過了文件夾中的副本,它工作得很好。你知道爲什麼會這樣嗎? –

+0

不知道。嘗試插入幾個打印語句來報告「長度」並跟蹤創建。你可以手動縮短「長度」來檢查基本操作嗎? – Prune

+0

e^-12845.056 = 2.9 ... e-5579。這會使雙精度(80位)浮點類型下溢。 –

相關問題