在numpy中,您可以执行np.allclose(A, B)
来查看数组A和B是否关闭。
朱莉娅有任何功能可以做到这一点吗?
最佳答案
(有关此答案的过时版本,请参见水平线下方。)
在 Julia 0.4中, isapprox
的数组版本为introduced,因此您现在可以编写:
isapprox(A, B)
与标量情况一样,您可以将相对公差
rtol
和绝对公差atol
指定为关键字参数。但是请注意,与NumPy的
allclose
(以及下面的此答案的先前解决方案)不同,array-isapprox
首先计算差值的范数,然后确定结果值。 (显然,逐点检查isapprox
is wrong 。)默认情况下,使用 LinearAlgebra.norm
(向量的2范数和矩阵的Froebenius范数),但是您可以使用norm
关键字参数来覆盖此行为。顺便说一句,如链接的pull请求中所述,在测试中,您可以编写
@test isapprox(A, B)
,因此@test_approx_eq
现在已过时,deprecated as of 0.6已过时。另外,还有A ≈ B
,它等效于isapprox(A, B)
,可以像任何比较运算符一样使用:a < b ≈ c ≤ d
。供引用,这是此文章的先前过时版本:
对于单个数字,定义了
isapprox
。如果要将其扩展到Array
的逐元素比较,则可以使用: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