在 numpy 中,您可以执行 np.allclose(A, B)
来查看数组 A 和 B 是否接近。
Julia 中有没有函数可以做到这一点?
最佳答案
(有关此答案的过时版本,请参阅水平线下方。)
isapprox
的数组版本是introduced在 Julia 0.4 中,您现在可以编写:
isapprox(A, B)
与标量情况一样,您可以指定相对容差 rtol
和绝对公差atol
作为关键字参数。
但请注意,与 NumPy 的 allclose
不同(以及下面这个答案的先前解决方案), array- isapprox
首先计算差异的范数,然后确定结果值。 (显然,检查 isapprox
逐点 is wrong 。)默认情况下, LinearAlgebra.norm
使用,它是向量的 2-范数和矩阵的 Froebenius 范数,但您可以使用 norm
覆盖此行为关键字参数。
顺便说一下,正如链接的拉取请求中提到的,在测试中你可以写 @test isapprox(A, B)
,所以@test_approx_eq
现已过时并且 deprecated as of 0.6 。另外,还有A ≈ B
,相当于isapprox(A, B)
并且可以像任何比较运算符一样使用:a < b ≈ c ≤ d
.
作为引用,这是本文之前的过时版本:
对于单个号码, isapprox
被定义为。如果您想将其扩展到 Array
上的逐元素比较s,你可以使用:
all(x -> isapprox(x...), zip(A, B))
all(x -> isapprox(x...), zip(A, A + 1e-5)) # => false
all(x -> isapprox(x...), zip(A, A + 1e-6)) # => true
关于numpy - allclose - 如何在 Julia 中检查两个数组是否接近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098844/