Python:pandas.DataFrame.comprod()和numpy.comprod()处理数字下溢吗?

时间:2017-04-19 22:05:20

标签: python pandas numpy floating-point underflow

具体来说,pandasnumpy中的这些累积产品功能是否以强大的方式实现,以便在将大量小数字相乘时处理下溢?例如,他们是否使用log-sum-exp技巧?

感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,没有。 @ warren-weckesser的评论显示这不起作用。

np.array([1e-5, 1e-30, 1e-100, 1e-200, 1e50, 1e150]).cumprod()

# returns
array([1.0e-005, 1.0e-035, 1.0e-135, 0.0e+000, 0.0e+000, 0.0e+000])

原因是numpy浮点支持最小正值2 ** - 1022,或约2.225e-308。一旦你的计算小于那个,它就会降到零,这就是我们在上面的输出中看到的。大熊猫也是如此。