Add column to a sparse matrix
The sparse.hstack
used in @Paul Panzer's
link is the simplest.
In [760]: sparse.hstack((sp,np.array([7,7,7])[:,None])).AOut[760]: array([[1, 0, 2, 7], [0, 0, 3, 7], [4, 5, 6, 7]], dtype=int32)
sparse.hstack
is not complicated; it just calls bmat([blocks])
.
sparse.bmat
gets the coo
attributes of all the blocks, joins them with the appropriate offself, and builds a new coo_matrix
.
In this case it joins
In [771]: print(sp) (0, 0) 1 (0, 2) 2 (1, 2) 3 (2, 0) 4 (2, 1) 5 (2, 2) 6In [772]: print(sparse.coo_matrix(np.array([7,7,7])[:,None])) (0, 0) 7 (1, 0) 7 (2, 0) 7
while changing the column numbers of the last to 3
.
In [761]: print(sparse.hstack((sp,np.array([7,7,7])[:,None]))) (0, 0) 1 (0, 2) 2 (1, 2) 3 (2, 0) 4 (2, 1) 5 (2, 2) 6 (0, 3) 7 (1, 3) 7 (2, 3) 7