Python scipy.stats.spearmanr:警告:在divide中遇到被零除的情况
我使用Python scipy.stats.spearmanr:警告:在divide中遇到被零除的情况,python,scipy,Python,Scipy,我使用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
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
按设计除以零,对角线上的rs=1。任何值都会发生这种情况 但是,在scipy 0.9中,该错误已在spearmanr函数中局部消除。 相应的源代码行包含
np.seterr(divide='ignore')#rs可以包含等于1的元素
,如果您可以发布重现问题的a
和b
的值,这将很有帮助。另外,设置np.seterr(all='raise')
会将警告变成异常,它会告诉您在spearmanr
中的哪一行发生了零除。零除是按设计进行的,对角线上的rs=1。奇怪的是,我更新了很多包(@ubuntu),但仍然不得不手动将其静音