You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:09:06