我無法讓以下代碼在 Python 中作業:
for t in range(-5,5):
try:
a = np.log(t)
except RunTimeWarning:
breakpoint()
我想要的是執行斷點陳述句,當日志函式從 -5 評估為 0 時。
uj5u.com熱心網友回復:
使用時np.log(0),numpy 不會拋出例外而是警告。這些與例外有很大不同,因為例外會阻止當前代碼運行,而警告只會通知您,但會保持代碼運行。
舉個例子:
>>> x = np.log(0)
Warning (from warnings module):
File "<pyshell#1>", line 1
RuntimeWarning: divide by zero encountered in log
>>> x
-inf
正如您所看到的,變數 x 確實獲得了分配的值 -> 警告永遠不會停止log(...)運行并回傳值。
因此,要解決您的問題,您必須在呼叫之前檢查傳遞給代碼的值是否為 0 np.log。或者如果您不希望 -inf 成為有效的回傳值但np.log由于某種原因仍需要呼叫,則可以在呼叫后檢查該值是否為 -inf。但是,最好不要撰寫導致警告的代碼,因此您可能應該在呼叫 log.log 之前檢查它是否為 0。
您可以在python 檔案中閱讀有關警告的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485068.html
下一篇:加快Numpy中3D矩陣的初始化
