(Python) 任何人都可以建议用另一个大小为 400k*800k 的 csr 矩阵 B 的列中的值填充 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]]
还有没有一种简单的方法可以将矩阵B按4:1的比例分割
最佳答案
将问题视为 A
和 B
首先都是密集数组,这会有所帮助。如果我正确理解你的问题,你会想要这样的东西:
A = B[:, x]
事实证明,您也可以对 CSR 矩阵执行相同的操作,而且效率相当高。关键是避免将值分配给现有的稀疏矩阵(尤其是 CSR 或 CSC 格式时)。通过一次性完成索引,scipy 能够使用更有效的方法。
关于python - 使用另一个 CSR 矩阵的列填充空的 CSR 稀疏矩阵并对其进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891855/