【问题标题】:is numpy isclose function returning bad answer?numpy isclose 函数是否返回错误的答案?
【发布时间】:2019-01-19 03:17:22
【问题描述】:

在以下示例中使用 numpy isclose:

import numpy as np
np.isclose(1533761040,1533748023.0, atol=1)

返回 True,即 False。

【问题讨论】:

  • 这两个数字相差 13017,在 15338 的容差范围内。为什么您期望得到不同的答案?
  • @JohnGordon 如果我通过 1 作为公差,你为什么说公差是 15338?
  • 查看我的回答了解更多详情。 (容差由三个因素计算得出,其中atol 只是其中之一。)
  • @JohnGordon 你的回答很清楚,谢谢!

标签: python numpy search


【解决方案1】:

根据documentationnp.isclose()使用这个公式:

absolute(a - b) <= (atol + rtol * absolute(b))

rtol 默认为 1e-05,并且您为 atol 提供了一个值 1,因此结果如下:

13017.0 <= 15338.48023

这是真的。为什么你认为它是假的?

【讨论】:

  • 在这里找到了我的方式,因为 pd.testing.assert_frame_equalpd.testing.assert_series_equal 上的 pandas 文档没有提到添加了这两个容差的事实 - 我一直认为它们都被应用了,更严格的两者被强制执行。这有点令人担忧......很好的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
相关资源
最近更新 更多