百分位数方法的 Python numpy 升级失败测试

标签 python numpy

当我将 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/

相关文章:

python - 如何更改matplotlib annotate中的箭头样式?

python - 快速对数计算

python - 如何从命令行将 Jupyter notebook 导出为 HTML?

python - 使用 sklearn.feature_extraction.text.TfidfVectorizer 的 tf-idf 特征权重

python - 重复并行运行一个函数

python - 将 ZipDataSet 写入 TFRecord

python - 网页抓取 | BeautifulSoup |解析表

python - 函数声明时出现 Theano OSError

python - 在 Numpy/PyTorch 中矢量化生成一批随机旋转矩阵的最佳方法?

python - 检测像素是否为红色