Numpy allclose-如何检查两个数组在Julia中是否接近
在numpy中,您可以执行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) 与标
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