scipy sparse matrix: remove the rows whose all elements are zero

后端 未结 3 566
天命终不由人
天命终不由人 2021-02-09 14:23

I have a sparse matrix which is transformed from sklearn tfidfVectorier. I believe that some rows are all-zero rows. I want to remove them. However, as far as I know, the existi

3条回答
  •  野的像风
    2021-02-09 15:19

    Slicing + getnnz() does the trick:

    M = M[M.getnnz(1)>0]
    

    Works directly on csr_array. You can also remove all 0 columns without changing formats:

    M = M[:,M.getnnz(0)>0]
    

    However if you want to remove both you need

    M = M[M.getnnz(1)>0][:,M.getnnz(0)>0] #GOOD
    

    I am not sure why but

    M = M[M.getnnz(1)>0, M.getnnz(0)>0] #BAD
    

    does not work.

提交回复
热议问题