sparse scipy 从稀疏矩阵中选取某些指定列构成新的稀疏
2018-08-09 本文已影响0人
小歪与大白兔
sparse scipy 从稀疏矩阵中选取某些指定列构成新的稀疏矩阵
主要想法:
1.getcol(i)获得指定行
2.hstack([A,B]) 合并两个矩阵
注意:hstack返回的矩阵是以coo.matrix形式存储的。
from scipy.sparse import hstack
def combine(row_indices,feature_matrix):
#row_indices删除列的list
#feature_matrix初始的稀疏矩阵
#采用二分法,减少hstack操作。
left = 0
right = len(row_indices)-1
mid = (left+right)/2
matrix1 = feature_matrix.getcol(row_indices[left])
matrix2 = feature_matrix.getcol(row_indices[right])
if left+1>=right:
test = hstack([matrix1,matrix2])
return test
while left+1<right:
matrix1 = hstack([matrix1,combine(row_indices[left:mid],feature_matrix)])
matrix2 = hstack([matrix2,combine(row_indices[mid:right],feature_matrix)])
res = hstack([matrix1,matrix2])
return res