Python networkX MultiDiGraph的边数

时间:2019-03-06 00:33:55

标签: python graph networkx

我有一个来自G包的MultiDiGraph类型的有向图networkx

两个通话以下的号码不同。他们不应该是一样的吗?

G.number_of_edges()

networkx.convert_matrix.to_scipy_sparse_matrix(G).nnz


不幸的是,我无法在我手动创建的小图中重现此问题,如下面的示例所示,其中两个调用打印了相同的数字5:

import networkx as nx
tmp = nx.MultiDiGraph([(0, 1), (1, 2), (2, 0), (1, 0), (3, 4)])

tmp.number_of_edges(): 5, nx.convert_matrix.to_scipy_sparse_matrix(tmp).nnz: 5

这是G的输出:

G.number_of_edges(): 87780, nx.convert_matrix.to_scipy_sparse_matrix(G).nnz: 84242

G是其他人生成的巨大图形,我无法在此处分享。

1 个答案:

答案 0 :(得分:1)

MultiDiGraph在相同的两个节点之间可以有多个边。

nnz的{​​{1}}属性返回非空矩阵值的数量。如果图形在两个节点之间有多个边,则scipy.sparse.csr_matrix的值将是每个方向上连接的节点数,而nnz将是图形中的边总数。这些数字会有所不同!

如果要获取边的总数,请为.number_of_edges()使用.sum()值。

csr_matrix
  

边数:8

     

非零矩阵值的数量:5

     

稀疏矩阵值的总和:8