Delete! in sparse matrix


#1

suppose you have the following sparse matrix

julia> type A end

julia> m=spzeros(A,10,10)
10×10 SparseMatrixCSC{A,Int64} with 0 stored entries

julia> m[1,1] = A()
A()

Now I would like to remove the element in (1,1).
If m was a dictionary I would use delete!(m, (1,1)). Is there a similar method for sparse matrices?

Cheers,
Carlo


#2

You need to define what “zero” means for your type, consider:

julia> m[1,2]
------ MethodError --------------------- Stacktrace (most recent call last)

 [1] — getindex(::SparseMatrixCSC{A,Int64}, ::Int64, ::Int64) at sparsematrix.jl:2092

MethodError: no method matching zero(::Type{A})
Closest candidates are:
  zero(::Type{Base.LibGit2.Oid}) at libgit2/oid.jl:88
  zero(::Type{Base.Pkg.Resolve.VersionWeights.VWPreBuildItem}) at pkg/resolve/versionweight.jl:80
  zero(::Type{Base.Pkg.Resolve.VersionWeights.VWPreBuild}) at pkg/resolve/versionweight.jl:120
  ...

Once you’ve done that, set m[1,1]=your_zero. If you want to free the memory used now storing a “zero” at m[1,1] use dropzero!.


#3

nice, thanks!