具体来说,当将大量小数相乘时,这些累积乘积函数是否以稳健的方式实现pandas
并处理下溢?numpy
例如,他们是否使用 log-sum-exp 技巧?
谢谢。
具体来说,当将大量小数相乘时,这些累积乘积函数是否以稳健的方式实现pandas
并处理下溢?numpy
例如,他们是否使用 log-sum-exp 技巧?
谢谢。
抱歉不行。@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。一旦你的计算变得小于这个值,它就会下降到零,这就是我们在上面的输出中看到的。熊猫也是如此。