我有一个CSR格式的scipy稀疏矩阵 . 这是72665x72665因此将此矩阵转换为密集矩阵以执行操作是不切实际的(此矩阵的密集表示类似于40演出) . 矩阵是对称的,并且具有大约8,200万个非零项(~1.5%) .
我希望能够做的是,对于每一行,我想得到最大N值的索引 . 如果这是一个numpy数组,我会使用 np.argpartition
这样做:
for row in matrix:
top_n_idx = np.argpartition(row,-n)[-n:]
有什么类似于我可以为稀疏矩阵做的事情吗?
2 回答
直接使用
CSR
格式并假设每行中有足够的正非零值可以写:改进@Paul Panzer的解决方案 . 现在它可以处理任何行少于n个值的情况 .