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

标签 python scipy sparse-matrix

(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的比例分割

最佳答案

将问题视为 AB 首先都是密集数组,这会有所帮助。如果我正确理解你的问题,你会想要这样的东西:

A = B[:, x]

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

关于python - 使用另一个 CSR 矩阵的列填充空的 CSR 稀疏矩阵并对其进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891855/

相关文章:

apache-spark - Spark Cosine Similarity(DIMSUM算法)稀疏输入文件

python - 从字符串中删除最后一个字符

python - Numpy 广播添加

python - 如何使用python在ubuntu中显示默认的漂亮弹出消息?

python - 是什么导致了这个语法错误?

python - 合并数字和文本特征以进行类别分类

python - 如何在 scipy 中模拟 2 样本 t 检验

python - 如何让 SciPy.integrate.odeint 在路径关闭时停止?

julia - 识别稀疏矩阵中哪些行(或列)具有值

r - R 中稀疏矩阵的多核求解