2011-08-12 61 views
2

遇到我用scipy.stats.spearmanr(a,b),我得到:scipy.stats.spearmanr:警告:除以零鴻溝

Warning: divide by zero encountered in divide 

操作正常結束,但會顯示警告。 ab都是「正常」數據,(沒有「僅零」向量等)。任何想法是什麼原因,或如何暫停警告?

編輯:

這是spearmanr有問題的行:

/usr/lib/python2.7/dist-packages/scipy/stats/stats.pyc in spearmanr(a, b, axis) 
    2226  rs = np.corrcoef(ar,br,rowvar=axisout) 
    2227 
-> 2228  t = rs * np.sqrt((n-2)/((rs+1.0)*(1.0-rs))) 
    2229  prob = distributions.t.sf(np.abs(t),n-2)*2 
    2230 
+3

如果你能爲'了'張貼的價值觀和'B'其重現該問題,這將是有益的。另外,設置'np.seterr(all ='raise')'會將警告轉變爲一個異常,它會告訴你'spearmanr'內的哪一行除零。 – unutbu

+0

除以0表示設計,對角線上rs = 1。 – user333700

回答

4

除以零是由設計,RS = 1上對角線。這發生在任何值上。

但是,在scipy 0.9中,這個錯誤在spearmanr函數中已經被本地沉默。 相應的源極線包含

np.seterr(divide='ignore') # rs can have elements equal to 1

+0

奇怪,你,我已經更新了軟件包(@ubuntu),但仍然不得不手動靜音 –