通过切片存储二维数组的所有非零元素
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
为了提取一维数组的所有非零元素,我们执行以下操作:
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