在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

09-28 12:27