我有一个 CSC 格式的矩阵 A,我只索引一个列
b = A[:,col]
产生一个 (nx 1) 矩阵。我想做的是:
v = M * b
其中 M 是 CSR 中的 (nxn) 矩阵。结果 v 是一个 (nx 1) CSR 矩阵。我需要迭代 v 中的值(实际上不包括 0)并检索满足特殊标准的一个元素的索引(注意:未选择稀疏矩阵格式来适应该特定操作,但一般矩阵 x 矩阵乘积应该是CSR * CSC 最快,对吧?)
问题是,迭代 CSR 格式向量 (0 < i < n: v[i,0]) 中的条目非常慢,而且我实际上浪费了相当多的内存,因为 v 不再是稀疏的。
谁能告诉我如何执行这些操作,以便我可以快速迭代结果向量,保持与复制相关的内存开销很小?
IN: M (CSR-Matrix), A (CSC-Matrix), col_index
v = M * A[:,col_index]
for entries in v:
do stuff
是否也可以以某种方式加快对 CSC 矩阵中列的“高级”索引?在代码中的其他点,我必须提取 A 的子矩阵(不能重新格式化以允许切片,因此使用索引数组),其中包括所有列的给定子集。A[:,idxlist] 在行分析时需要很长时间。
期待您的建议