我有一个大矩阵,我想转换为稀疏CSR格式。
当我这样做的时候:
import scipy as sp
Ks = sp.sparse.csr_matrix(A)
print Ks
如果A很密集,我会
(0, 0) -2116689024.0
(0, 1) 394620032.0
(0, 2) -588142656.0
(0, 12) 1567432448.0
(0, 14) -36273164.0
(0, 24) 233332608.0
(0, 25) 23677192.0
(0, 26) -315783392.0
(0, 45) 157961968.0
(0, 46) 173632816.0
等。。。
我可以使用以下方法获取行索引、列索引和值的向量:
Knz = Ks.nonzero()
sparserows = Knz[0]
sparsecols = Knz[1]
#The Non-Zero Value of K at each (Row,Col)
vals = np.empty(sparserows.shape).astype(np.float)
for i in range(len(sparserows)):
vals[i] = K[sparserows[i],sparsecols[i]]
但是,是否可以提取假设包含在稀疏CSR格式中的向量(值、列索引、行指针)?
Scipy的文档解释了可以从这三个向量生成一个CSR矩阵,但是我想做相反的事情,把这三个向量取出来。
我错过了什么?
谢谢你的时间!
最佳答案
value = Ks.data
column_index = Ks.indices
row_pointers = Ks.indptr
我相信这些属性是未记录的,可能会使它们发生变化,但我已经在Scipy的几个版本上使用过它们。
关于python - 来自scipy CSR稀疏矩阵的访问值,列索引和row_ptr数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10360210/