簡體   English   中英

Python networkX MultiDiGraph 邊數

[英]Python networkX MultiDiGraph number of edges

我有向圖G類型的MultiDiGraphnetworkx包。

下面兩個電話的號碼是不同的。 他們不應該是一樣的嗎?

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是其他人生成的巨大圖,我無法在這里分享。

MultiDiGraph可以在相同的兩個節點之間有多個邊。

scipy.sparse.csr_matrixnnz屬性返回非空矩陣值的數量。 如果一個圖在兩個節點之間有多個邊,那么nnz的值將是每個方向上連接節點的數量,而.number_of_edges()將是圖中邊的總數。 這些數字會有所不同!

使用.sum()值的csr_matrix如果你想邊的總數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM