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