在 Julia 中检查矩阵是否为零矩阵的有效方法

sto*_*ner 2 arrays julia

我有一个 n×n 矩阵(n 非常大),我想检查它在 Julia 中是否为零矩阵。我尝试的方法之一如下

using BenchmarkTools
using Random

A = rand(2000,2000); # n = 2000 for instance.
@btime all($A .== 0) 
Run Code Online (Sandbox Code Playgroud)

其输出到

2.380 ms (4 allocations: 492.59 KiB)
false
Run Code Online (Sandbox Code Playgroud)

还有其他有效的方法可以达到同样的目的吗?

DNF*_*DNF 5

有一个专用函数用于查明对象是否是“附加身份”,即零。这个函数也适用于数组:

iszero(A)
Run Code Online (Sandbox Code Playgroud)

在内部,这是作为 实现的all(iszero, A),但我更喜欢iszero(A)它,因为它更通用。

在某些情况下,例如对于稀疏数组,iszero(A)可能比 快得多all(iszero, A),因为后者将迭代每个元素,而iszero(A)仅迭代结构上的非零元素。