将scipy稀疏coo矩阵转换为networkx-graph并返回不会产生原始矩阵

2024-09-28 17:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对大量的细胞仪数据进行数据分析,我正在尝试图形聚类。在我摆弄的某个时候,我用coo格式制作了一个杂乱的稀疏矩阵,将其转换为networkx图形,然后再次将其还原。在

data.shape

(20000,32)

20000个项目(细胞),32个维度(生物分子丰度)

^{pr2}$

<;20000x2000类型的稀疏矩阵 以坐标格式存储600000个元素>

在搜索30个邻居时,20000个节点和600000条边符合预期

#Build undirected weighted nx graph
nxgraph = nx.Graph(knn)
nxgraph.number_of_edges()

468258个

较少的边数,但不是一半

#Back to coo
cooafter = nx.to_scipy_sparse_matrix(nxgraph, format='coo')
cooafter

<;20000x2000类型的稀疏矩阵 以坐标格式存储936516个元素>

测试边数加倍

也许我对这些数据结构了解不够,这种行为完全符合逻辑。但是,我希望转换成networkx图并返回到相同的图中,有人能解释为什么coo和coafter的边数不一样吗?在


Tags: toltgtnetworkx图形元素类型格式