2015-10-29 51 views
2

我遇到了以下警告,當它在我的程序運行scipy.stats.stats.pearsonr()如何找出Python中出現警告的原因?

/usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:2471: RuntimeWarning: invalid value encountered in double_scalars 

我不知道如何找出警告的原因,通過使用打印出來,或通過使用像PDB調試器(我知道一些有關pdb,但我不知道如何使用pdb來找出警告的原因)。

這裏是我的程序,它使用pearsonr()行:

... 
    corr = pearsonr(t1, t2) 
    ... 

回答

0
+0

謝謝。 (1)我沒有使用'warnings.showwarning'。你將如何使用打印堆棧跟蹤的函數? (2)我在循環內部使用'corr = pearsonr(t1,t2)',並且在我的帖子中引用的警告只發生在一些迭代中。以及如何在發生警告時捕捉迭代? – Tim

+0

打印堆棧軌跡的每一幀。 –

+0

'corr = pearsonr(t1,t2)'在一個循環內,並且在我的文章中引用的警告只發生在一些迭代中。以及如何在發生警告時捕捉迭代?或者你的意思是打印每個迭代的堆棧軌跡的每一幀? – Tim

1

根據docs,您可以更改默認警告行爲以引發異常,這當然會使跟蹤和調試變得更容易。

import warnings 
# Cause all warnings to raise exceptions: 
warnings.simplefilter("error") # change the hook 
# Trigger a warning: 
corr = pearsonr(t1, t2) # this will now raise