Numpy allclose-如何检查两个数组在Julia中是否接近

Numpy allclose-如何检查两个数组在Julia中是否接近,numpy,julia,Numpy,Julia,在numpy中,您可以执行np.allclose(A,B)以查看数组A和B是否接近 Julia中有任何函数可以这样做吗?Julia没有附带的名为allclose的函数: julia> allclose ERROR: allclose not defined 我不知道现有的Julia函数是否提供了您想要的功能,但根据文档,您可以自己实现一个(包括): (有关此答案的过时版本,请参见水平线下方。) Julia 0.4中有一个数组版本,因此您现在可以编写: isapprox(A, B) 与标

在numpy中,您可以执行
np.allclose(A,B)
以查看数组A和B是否接近


Julia中有任何函数可以这样做吗?

Julia没有附带的名为
allclose
的函数:

julia> allclose
ERROR: allclose not defined
我不知道现有的Julia函数是否提供了您想要的功能,但根据文档,您可以自己实现一个(包括):

(有关此答案的过时版本,请参见水平线下方。)

Julia 0.4中有一个数组版本,因此您现在可以编写:

isapprox(A, B)
与标量情况类似,您可以将相对公差
rtol
和绝对公差
atol
指定为关键字参数

但请注意,与NumPy的
allclose
(以及下面这个答案的上一个解决方案)不同,array-
isapprox
首先计算差值的范数,然后决定结果值。(显然,检查
isapprox
逐点
)默认使用,这是向量的2-范数和矩阵的Froebenius范数,但您可以使用
范数
关键字参数覆盖此行为

顺便说一句,正如链接的拉动请求中提到的,在测试中,您可以编写
@test isapprox(A,B)
,因此
@test\u approx\u eq
现在已经过时了。此外,还有
A≈ B
,它相当于isapprox(A,B),可以像任何比较运算符一样使用:
A


作为参考,这是这篇文章的旧版本:

对于单个数字,定义了。如果要将其扩展到
数组
上的元素级比较,可以使用:

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

如果您正在编写测试,
使用Base.Test
,然后
@Test\u近似值\u eq A B
应该可以工作。

您也可以使用二进制运算符
(在REPL处键入为
\appro
)。
isapprox(A, B)
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