如何遍历稀疏数组的非零值
How to iterate over the non-zero values of a sparse array
我在 Julia 中有一个稀疏数组,我想迭代它的非零条目。这样做的好方法是什么?
到目前为止,我有:
using SparseArrays
a = sprandn(20,20,0.3)
for (x,y,v) in a
print(x,y,v)
end
findnz
函数 returns 包含稀疏矩阵的 x、y 和值分量数组的元组。也就是说,
findnz(a) gives ([x1, x2, x3, ...], [y1, y2, y3, ...], [v1, v2, v3, ...])
您可以像迭代器一样使用它,如下所示:
for (x,y,v) in zip(findnz(a)...)
println(x,' ',y,' ',v)
end
这里有一个直接的方法
using SparseArrays
function print_nz(A)
for col in 1:size(A, 2)
for r in nzrange(A, col)
println(rowvals(A)[r], ' ', col, ' ', nonzeros(A)[r])
end
end
end
及其使用示例:
julia> A = [1 2 1
0 0 1
3 0 0];
julia> print_nz(sparse(A))
1 1 1
3 1 3
1 2 2
1 3 1
2 3 1
我在 Julia 中有一个稀疏数组,我想迭代它的非零条目。这样做的好方法是什么?
到目前为止,我有:
using SparseArrays
a = sprandn(20,20,0.3)
for (x,y,v) in a
print(x,y,v)
end
findnz
函数 returns 包含稀疏矩阵的 x、y 和值分量数组的元组。也就是说,
findnz(a) gives ([x1, x2, x3, ...], [y1, y2, y3, ...], [v1, v2, v3, ...])
您可以像迭代器一样使用它,如下所示:
for (x,y,v) in zip(findnz(a)...)
println(x,' ',y,' ',v)
end
这里有一个直接的方法
using SparseArrays
function print_nz(A)
for col in 1:size(A, 2)
for r in nzrange(A, col)
println(rowvals(A)[r], ' ', col, ' ', nonzeros(A)[r])
end
end
end
及其使用示例:
julia> A = [1 2 1
0 0 1
3 0 0];
julia> print_nz(sparse(A))
1 1 1
3 1 3
1 2 2
1 3 1
2 3 1