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),但仍然不得不手动将其静音