Python的numpy升级后,使用percentile方法测试失败。

3

当我将 numpy 版本从 1.11.3 更新到 1.16.5 后,由于 percentile 方法计算出的值之间存在小数差异,导致我的测试失败。

numpy = 1.11.3

import numpy as np
print (np.percentile([1.0, 0.0, 0.0, 0.0], [15.0, 85.0])[1])
> 0.54999999999999982

numpy = 1.16.5

import numpy as np
print (np.percentile([1.0, 0.0, 0.0, 0.0], [15.0, 85.0])[1])
> 0.5499999999999998

我希望知道引起错误的改变是什么,我想了解升级情况,以免在发布到生产环境后出现意外结果。

谢谢。

1个回答

1
实际上,你的测试很好,只是打印了两种不同的精度。
import numpy as np
print (np.percentile([1.0, 0.0, 0.0, 0.0], [15.0, 85.0])[1])
> 0.54999999999999982 # has 17 decimal places

import numpy as np
print (np.percentile([1.0, 0.0, 0.0, 0.0], [15.0, 85.0])[1])
> 0.5499999999999998 # has only 16

实际值确实为0.54999999999999982236。因此您的测试是正确的。
为了确保使用numpy进行数字测试按预期工作,您可以使用np.set_printoptions(precision=20)设置打印值的精度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接