使用另一个csr矩阵的列填充空的CSR稀疏矩阵并对其进行切片

时间:2017-08-26 04:11:09

标签: python scipy sparse-matrix

(Python)的 任何人都可以建议使用另一个csr矩阵B(大小为400k * 800k)的列填充csr矩阵A的最简单,最快捷的方法。 我尝试失败了:

#x is a list of size 500 which contains the column numbers needed from B
A=sparse.csr_matrix((400000,500))

for i in range(400000):
    for j in range(500):
        A[i,j]=B[i,x[j]]

还有一种简单的方法可以按比例4:1

分割矩阵B.

1 个答案:

答案 0 :(得分:0)

有助于考虑问题,好像AB首先是密集数组。如果我理解你的问题,你需要的东西是:

A = B[:, x]

事实证明,您也可以使用CSR矩阵执行相同的操作,并且它的效率相当高。关键是要避免将值分配给现有的稀疏矩阵(特别是如果它是CSR或CSC格式)。通过一次性完成索引,scipy能够使用更有效的方法。