【发布时间】:2013-07-26 16:58:20
【问题描述】:
我在我的脚本中发现了一个问题,该问题是由于尝试使用 scipy 的 .tstd 函数进行标准差计算而发生的,
sp.stats.tstd(IR)
我的IR 值是0.0979。有没有办法让它停止(我假设)将它舍入为零?我已经尝试过以前的 stackoverflow 帖子中的一个建议,该帖子建议将该号码称为np.float64,但这没有用。希望有人知道答案。
完整的错误打印输出:
Traceback (most recent call last):
File "Utt_test.py", line 995, in <module>
X.write(Averaging())
File "Utt_test.py", line 115, in Averaging
IR_sdev=str(round(sp.stats.tstd(IR),4))
File "/usr/lib64/python2.7/site-packages/scipy/stats/stats.py", line 848, in tstd
return np.sqrt(tvar(a,limits,inclusive))
File "/usr/lib64/python2.7/site-packages/scipy/stats/stats.py", line 755, in tvar
return a.var()*(n/(n-1.))
ZeroDivisionError: float division by zero
【问题讨论】:
-
tstd需要一个 numpy 数组的输入。很难计算单个数字的标准差。 -
从错误消息中,
a.var()*(n/(n-1.))的计算过程中出现了问题。比问题在于n=1.。与 numpy float 或 IR 无关... -
我明白了……嗯,那我得重写一些东西了。该程序通常运行多个数字。我正在尝试一个特殊情况。
-
该错误信息不是很有帮助,但真正的问题是
tstd和tvar(由tstd调用)至少需要两个值。
标签: python numpy floating-point scipy divide-by-zero