Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python networkX有向图边数_Python_Graph_Networkx - Fatal编程技术网

Python networkX有向图边数

Python networkX有向图边数,python,graph,networkx,Python,Graph,Networkx,我有一个来自networkx包的multi-digraph类型的有向图G 下面两个电话的号码不同。他们不应该是一样的吗 G.边的数量() networkx.将矩阵转换为稀疏矩阵(G).nnz 不幸的是,我无法在手动创建的小图中重现此问题,如下面的示例所示,其中两个调用打印相同的数字5: import networkx as nx tmp = nx.MultiDiGraph([(0, 1), (1, 2), (2, 0), (1, 0), (3, 4)]) tmp.number_of_edge

我有一个来自
networkx
包的
multi-digraph
类型的有向图
G

下面两个电话的号码不同。他们不应该是一样的吗

G.边的数量()

networkx.将矩阵转换为稀疏矩阵(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
是一个其他人生成的巨大图形,我无法在此处共享。

一个
多向图
可以在相同的两个节点之间有多条边

scipy.sparse.csr_矩阵的
nnz
属性返回非空矩阵值的数量。如果图形在两个节点之间有多条边,则
nnz
的值将是每个方向上连接的节点数,而
.number\u of_edges()
将是图形中的边总数。这些数字将会不同

如果要获取边的总数,请使用
.sum()
值作为
csr\u矩阵

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

nx_edge_count = tmp.number_of_edges()
scipy_nnz = nx.convert_matrix.to_scipy_sparse_matrix(tmp).nnz
scipy_edge_count = nx.convert_matrix.to_scipy_sparse_matrix(tmp).sum()

print("Number of edges: {}".format(nx_edge_count))
print("Number of non-zero matrix values: {}".format(scipy_nnz))
print("Sum of sparse matrix values: {}".format(scipy_edge_count))
边数:8

非零矩阵值的数量:5

稀疏矩阵值之和:8


有一个可复制的例子吗?不幸的是没有--我更新了问题。这很有帮助,谢谢。我意识到邻接矩阵包含值
n
,而不是
1
,用于相同两个节点之间存在
n
次的边。