赞
踩
方法#1
这是一个使用带索引的手动复制的稀疏矩阵解决方案 –
from scipy.sparse import csr_matrix
r,c = C.nonzero()
rD_sp = csr_matrix(((1.0/D)[r], (r,c)), shape=(C.shape))
out = C.multiply(rD_sp)
输出是稀疏矩阵,也与C / D [:,None]的输出相反,后者创建了一个完整的矩阵.因此,所提出的方法节省了内存.
使用np.repeat而不是索引进行复制可能会提升性能 –
val = np.repeat(1.0/D, C.getnnz(axis=1))
rD_sp = csr_matrix((val, (r,c)), shape=(C.shape))
方法#2
另一种方法可能涉及稀疏矩阵的数据方法,它为我们提供了稀疏矩阵的平面视图以获得就地结果,并且还避免使用非零,如此 –
val = np.repeat(D, C.getnnz(axis=1))
C.data /= val
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。