Python 在numpy&x27;什么是allclose函数?

Python 在numpy&x27;什么是allclose函数?,python,numpy,Python,Numpy,在numpy.allclose()中,有两个容差因子用于确定两个数组是否足够接近,可以算作相同的数组。有相对公差rtol和绝对公差atol。发件人: 也可从文件中获得: 如果以下公式为元素形式的True,则allclose返回True。 绝对(a-b)令人困惑的是,该方程显示了同时使用的两个参数。请这样看: 用例1:绝对公差(atol):绝对公差(a-b)使用哪个公差取决于您的问题陈述。例如,如果我的数组具有范围从1e-10到1e10的广泛的值域,该怎么办?小的atol适用于小值,但不适用于大

numpy.allclose()
中,有两个容差因子用于确定两个数组是否足够接近,可以算作相同的数组。有相对公差
rtol
和绝对公差
atol
。发件人:

也可从文件中获得:

如果以下公式为元素形式的True,则allclose返回True。

绝对(a-b)令人困惑的是,该方程显示了同时使用的两个参数。请这样看:


  • 用例1:绝对公差(
    atol
    绝对公差(a-b)使用哪个公差取决于您的问题陈述。例如,如果我的数组具有范围从1e-10到1e10的广泛的值域,该怎么办?小的
    atol
    适用于小值,但不适用于大值,反之亦然,适用于大的
    atol
    。但是,<>代码> RTOL在这种情况下是完美的,因为我可以指定可接受的delta应该与每个值一起缩放。

    并且添加到这个极好的答案:这两个用例都是完全合法的:要么你想说“我认为两个值如果它们最多相差0.1,那么就关闭,或者你可能想说”。“如果两个值相差最多0.1%,那么我认为两个值很接近。“@lagerber。确切地很明显,两者都需要实施。这样做的方式有点令人困惑。案例2我可以理解,我想用数据的数量级进行缩放。但是,在这种情况下,为什么你会在右手边给b优先于a,而不是a和b的平均值(或其他什么)?这只是惯例吗?你只要选一个,在这种情况下它正好是b,可能是抛硬币?[编辑:我想让我感到困扰的是不对称性。:]@eric。因为你想知道这些元素是否靠得很近。如果它们足够远,以至于,
    a
    b
    0.5*(a+b)
    之间存在差异,那么答案无论如何都是假的。@eric。我已经更新了我的答案,来谈谈你想在哪里使用这两种方法。一般的想法是,您通常希望使用
    rtol
    。但你不能为零。
    numpy.allclose(a, b, rtol=1e-05, atol=1e-08)