如何在将COO转换为CSR矩阵时避免求和重复

  • 本文关键字:求和 CSR COO 转换 python matrix
  • 更新时间 :
  • 英文 :


将COO矩阵转换为CSR格式时,将对重复项求和。在早期版本的scipy中有一个标志sum_duplicates=False,但是现在没有了。是否有办法将COO转换为CSR矩阵,而不需要将重复项相加?

下面是生成coo矩阵的示例:

from scipy.sparse import csr_matrix,coo_matrix
i_tar = np.array([3,3,3,3,3,6,7,8,8,2,2,2])
j_src = np.array([8,8,8,8,8,5,7,18,18,4,4,4])
data = np.array([3,4,6,8,40,6,12,5,6,2,3,9])
coo_mat = coo_matrix((data, (i_tar,j_src)),shape=(20,20))
print coo_mat
  (3, 8)  3
  (3, 8)  4
  (3, 8)  6
  (3, 8)  8
  (3, 8)  40
  (6, 5)  6
  (7, 7)  12
  (8, 18) 5
  (8, 18) 6
  (2, 4)  2
  (2, 4)  3
  (2, 4)  9

将其转换为CSR格式,我们发现:

print coo_mat.tocsr()
  (2, 4)  14
  (3, 8)  61
  (6, 5)  6
  (7, 7)  12
  (8, 18) 11

有重复项求和。我认为有很好的理由将重复相加,但这不是我所需要的。

试试这个代码,

coo_mat.todia().tocsr()

最新更新