如何获取Scipy CSR稀疏图中的非零连接索引
获取Scipy CSR稀疏矩阵的非零元素索引对
当然可以!Scipy的稀疏矩阵提供了几种简单的方式来获取这些非零连接的索引对,下面是两种最常用的方法:
方法1:使用nonzero()方法
CSR矩阵的nonzero()方法会直接返回两个数组,分别对应所有非零元素的行索引和列索引。你只需要把这两个数组配对,就能得到想要的索引对列表:
import numpy as np from scipy.sparse import csr_matrix # 你的示例代码 G_dense = np.array([[0, 2, 1], [2, 0, 0], [1, 0, 0]]) G_sparse = csr_matrix(G_dense) # 获取非零元素的行和列索引 rows, cols = G_sparse.nonzero() # 配对成索引对 index_pairs = list(zip(rows, cols)) print(index_pairs) # 输出: [(0, 1), (0, 2), (1, 0), (2, 0)]
方法2:转换为COO格式矩阵
COO(Coordinate)格式的稀疏矩阵本身就是以行索引、列索引、值的三元组形式存储数据的,所以转换后可以直接提取row和col属性来生成索引对:
from scipy.sparse import coo_matrix # 转换为COO格式 G_coo = G_sparse.tocoo() # 配对行和列索引 index_pairs = list(zip(G_coo.row, G_coo.col)) print(index_pairs) # 输出同样是: [(0, 1), (0, 2), (1, 0), (2, 0)]
这两种方法都能完美满足你的需求,其中nonzero()更直接,而COO格式的方式在你需要同时处理行、列、值的时候会更方便。
内容的提问来源于stack exchange,提问作者Ajinkya Ambatwar
相关产品推荐
相关产品推荐

