Python。访问 CSR 格式的列索引

Python. Accesing column indices in CSR format

我开始使用 python 和 CSR 格式。

我知道如果我有一个正确初始化的 csr 矩阵,我们称它为 "conectivity",那么,当我输入

conectivity[14,:]

我会得到这样的答复:

(0, 1)  1.0      
(0, 13) 1.0       
(0, 15) 1.0      
(0, 27) 1.0 

获取这个向量的正确方法是什么?

[ 1, 13, 15, 27 ]

conectivity是一个矩阵(不是np.matrix的子类,但功能相似)。

conectivity[14,:]

是另一个二维稀疏矩阵。这就是你的打印显示

(0, 1)  1.0      
(0, 13) 1.0       
(0, 15) 1.0      
(0, 27) 1.0 

conectivity[14,:].toarray()(或简称.A)会给你类似

的东西
[[0,1,0...1,0,1,....]]

一个二维数组,有 1 行和很多 0。

conectivity[14,:].data是这个矩阵的data属性。

conectivity[14,:].col 是列索引属性。我想这就是你想要的。

conectivity[14,:].nonzero() 还给出(非零项的)行值和列值。


我应该补充一点,虽然 nonzero 适用于所有稀疏格式,但 .col 仅适用于 coo 格式(coo 格式不实现这种形式的索引) .对于 csr 矩阵,.indices 给出列索引值;对于单行矩阵,这应该是所需的数组。对于多行矩阵 .indices 更复杂。