假设我有一个CSR格式的矩阵,将行(或行)设置为零的最有效方法是什么?
以下代码运行缓慢:
A = A.tolil()
A[indices, :] = 0
A = A.tocsr()
Run Code Online (Sandbox Code Playgroud)
我不得不转换为scipy.sparse.lil_matrix因为CSR格式似乎既不支持花哨的索引,也不支持将值设置为切片.
说我想从a中删除对角线scipy.sparse.csr_matrix.这样做有效吗?我在sparsetools模块中看到有C返回对角线的功能.
def csr_setdiag_val(csr, value=0):
"""Set all diagonal nonzero elements
(elements currently in the sparsity pattern)
to the given value. Useful to set to 0 mostly.
"""
if csr.format != "csr":
raise ValueError('Matrix given must be of CSR format.')
csr.sort_indices()
pointer = csr.indptr
indices = csr.indices
data = csr.data
for i in range(min(csr.shape)):
ind = indices[pointer[i]: pointer[i + 1]]
j = ind.searchsorted(i)
# matrix has only elements up until diagonal …Run Code Online (Sandbox Code Playgroud)