我使用scipy.stats.spearmanr(a,b)
并获得:
Warning: divide by zero encountered in divide
操作正确结束,但会显示警告。 a
和b
都是“正常”数据,(没有“仅零”向量等)。知道原因是什么,或者如何暂停警告?
编辑:
这是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
答案 0 :(得分:4)
除以零是设计,对角线rs = 1。任何值都会发生这种情况。
但是,在scipy 0.9中,此错误已在spearmanr函数内本地静默。 相应的源代码行包含
np.seterr(divide='ignore') # rs can have elements equal to 1