我有一个很大的csr_matrix,我对前十个值及其每一行的指数感兴趣.但我没有找到一种操纵矩阵的好方法.
这是我目前的解决方案,主要思想是逐行处理它们:
row = csr_matrix.getrow(row_number).toarray()[0].ravel()
top_ten_indicies = row.argsort()[-10:]
top_ten_values = row[row.argsort()[-10:]]
Run Code Online (Sandbox Code Playgroud)
通过这样做,csr_matrix没有充分利用其优点.它更像是一个强力解决方案.
我有一个 CSR 格式的 scipy 稀疏矩阵。它的尺寸为 72665x72665,因此将此矩阵转换为稠密矩阵来执行运算是不切实际的(此矩阵的稠密表示大约为 40 gig)。该矩阵是对称的,有大约 8200 万个非零项 (~1.5%)。
我想要做的是,对于每一行,我想要获得最大 N 值的索引。如果这是一个 numpy 数组,我会这样做np.argpartition:
for row in matrix:
top_n_idx = np.argpartition(row,-n)[-n:]
Run Code Online (Sandbox Code Playgroud)
对于稀疏矩阵,我可以做类似的事情吗?