通过切片存储二维数组的所有非零元素

Storing all nonzero elements of a 2-D array via slicing

为了提取一维数组的所有非零元素,我们执行以下操作:

One_D = [1,4,5,0,0,4,7,0,2,6]
One_D[One_D .> 0]

如何对两个或两个以上的维向量数组做类似的事情?

two_D = [[1,0,2,3,0],[4,0,5,0,6]]

这个two_D[two_D .> 0]显然是不正确的。那么,我们可以尝试什么?

您的 two_D 不是二维的,而是向量的向量。您可以使用然后广播 filter:

julia> filter.(>(0), two_D)
2-element Vector{Vector{Int64}}:
 [1, 2, 3]
 [4, 5, 6]

如果您的 two_D 是这样的矩阵:

julia> mat = [[1,0,2,3,0] [4,0,5,0,6]]
5×2 Matrix{Int64}:
 1  4
 0  0
 2  5
 3  0
 0  6

您仍然可以使用 filter,但不能广播。在这种情况下,您将获得找到的元素的平面向量:

julia> filter(>(0), mat)
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6