2016-03-03 58 views
0

我开始使用python和CSR格式。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 ] 

回答

0

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

conectivity[14,:] 

是另一个2D稀疏矩阵。这就是您的打印显示

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

(简称或.Aconectivity[14,:].toarray()会给你像

[[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比较复杂。