当我将 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
我正在寻找导致失败的更改的答案,我想了解升级,以便一旦发布到产品,我就不会得到意想不到的结果。
谢谢。
最佳答案
实际上你的测试没问题,你只是打印了两种不同的精度
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.5499999999999982236
。所以你的测试没问题。
为确保使用 numpy
进行的数字测试按预期工作,您可以使用 np.set_printoptions(precision=20)
设置打印值的精度。
关于百分位数方法的 Python numpy 升级失败测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59173705/