@@ -328,8 +328,12 @@ function _sparsesimilar(S::SparseMatrixCSC, ::Type{TvNew}, ::Type{TiNew}) where
328
328
return SparseMatrixCSC (S. m, S. n, newcolptr, newrowval, similar (S. nzval, TvNew))
329
329
end
330
330
# parent methods for similar that preserves only storage space (for when new and old dims differ)
331
- _sparsesimilar (S:: SparseMatrixCSC , :: Type{TvNew} , :: Type{TiNew} , dims:: Dims{2} ) where {TvNew,TiNew} =
332
- SparseMatrixCSC (dims... , fill (one (TiNew), last (dims)+ 1 ), similar (S. rowval, TiNew), similar (S. nzval, TvNew))
331
+ function _sparsesimilar (S:: SparseMatrixCSC , :: Type{TvNew} , :: Type{TiNew} , dims:: Dims{2} ) where {TvNew,TiNew}
332
+ S1= spzeros (TvNew, TiNew, dims... )
333
+ sizehint! (S1. rowval, min (length (S. rowval), length (S1)))
334
+ sizehint! (S1. nzval, min (length (S. nzval), length (S1)))
335
+ return S1
336
+ end
333
337
# parent method for similar that allocates an empty sparse vector (when new dims are single)
334
338
_sparsesimilar (S:: SparseMatrixCSC , :: Type{TvNew} , :: Type{TiNew} , dims:: Dims{1} ) where {TvNew,TiNew} =
335
339
SparseVector (dims... , similar (S. rowval, TiNew, 0 ), similar (S. nzval, TvNew, 0 ))
0 commit comments