My sparse bit array is not dropping non zeros when flipping bits between rows (assignment optimization problem)
8766×11125 SparseArrays.SparseMatrixCSC{Bool,Int64} with 8766 stored entries:
[7244, 1] = 1
[2111, 291] = 1
[2357, 347] = 1
[8071, 432] = 1
⋮
[2517, 9187] = 1
[1756, 9189] = 1
[1857, 9194] = 1
[2977, 9195] = 1
My flip Bit code is as follows (I’m also open to better ways at doing this!)
x1=10
x2=20
y1=starts[x1,:].nzind[1]
y2=starts[x2,:].nzind[1]
starts[x1,y1] = false
starts[x2, y2] = false
starts[x1,y2] = true
starts[x2, y1] = true
My problem is that starts initially was stoing 8766 Values, and now stores 8768 values
julia> starts
8766×11125 SparseArrays.SparseMatrixCSC{Bool,Int64} with 8768 stored entries:
[7244, 1] = 1
[2111, 291] = 1
[2357, 347] = 1
[8071, 432] = 1
⋮
[2517, 9187] = 1
[1756, 9189] = 1
[1857, 9194] = 1
[2977, 9195] = 1
notably, its carrying both values
2×11125 SparseArrays.SparseMatrixCSC{Bool,Int64} with 4 stored entries:
[1, 7773] = 1
[2, 7773] = 0
[1, 9028] = 0
[2, 9028] = 1
How can I continue to only store nonzero (true) values?