如何在 Julia 中将稀疏矩阵转换为密集矩阵

How to convert sparse matrix to dense matrix in Julia

如何在 Julia 中将稀疏矩阵转换为密集矩阵?根据 this 我应该可以使用 fullMatrix,但是 full 在 SparseArrays 模块中显然不是标准的,当我尝试使用 Matrix:

    I = []
    J = []
    A = []

    for i in 1:3
        push!(I, i)
        push!(J, i^2)
        push!(A, sqrt(i))
    end

    sarr = sparse(I, J, A, 10, 10)
    arr = Matrix(sarr)

我收到这个错误:

Exception has occurred: MethodError
MethodError: no method matching zero(::Type{Any})

collect(sarr)Matrix(sarr)就够了。

但是请注意,您的代码使用了不推荐的无类型容器。数组中的索引是 Ints 所以它应该是:

I = Int[]
J = Int[]
A = Float64[]

for i in 1:3
    push!(I, i)
    push!(J, i^2)
    push!(A, sqrt(i))
end

sarr = sparse(I, J, A, 10, 10)

现在您可以:

julia> collect(sarr)
10×10 Matrix{Float64}:
 1.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  1.41421  0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  1.73205  0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0
 0.0  0.0  0.0  0.0      0.0  0.0  0.0  0.0  0.0      0.0