![](/img/trans.png)
[英]Python Networkx : find all edges for a given path in a multiDiGraph
[英]Python networkX MultiDiGraph number of edges
我有向圖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
是其他人生成的巨大圖,我無法在這里分享。
MultiDiGraph
可以在相同的兩個節點之間有多個邊。
scipy.sparse.csr_matrix
的nnz
屬性返回非空矩陣值的數量。 如果一個圖在兩個節點之間有多個邊,那么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.