簡體   English   中英

networkx中鄰接矩陣的路徑

[英]path to adjacency matrix in networkx

我正在嘗試使用networkx庫將圖形中的路徑轉換為鄰接矩陣。 我可以將整個圖轉換為鄰接矩陣:

>>>import networkx as nx
>>>DG=nx.DiGraph()
>>>DG.add_edges_from([(1,2), (2,3),(1,3)])
>>>nx.to_numpy_matrix(DG)
....matrix([[ 0.,  1.,  1.],
    [ 0.,  0.,  1.],
    [ 0.,  0.,  0.]])

但是,找到所有從節點1到節點3的簡單路徑后:

>>>list(nx.all_simple_paths(DG,1,3))
....[[1, 2, 3], [1, 3]]

我無法將它們轉換為鄰接矩陣。 我希望能夠選擇一條路徑並將其轉換為鄰接矩陣,例如,第二條路徑應返回:

....matrix([[ 0.,  0.,  1.],
    [ 0.,  0.,  0.],
    [ 0.,  0.,  0.]])

那不是鄰接矩陣。 但是您可以輕松地自己構建它,如下所示:

import networkx as nx
import numpy as np

DG=nx.DiGraph()
DG.add_edges_from([(1,2), (2,3),(1,3)])
paths = list(nx.all_simple_paths(DG,1,3))

for path in paths:
    matrix = np.matrix(np.zeros((len(DG), len(DG))))
    for i in range(len(path)-1):
        matrix[path[i]-1], path[i+1]-1] = 1  # edit: credits to @Joel
    print(matrix)

輸出:

[[ 0.  1.  0.]
 [ 0.  0.  1.]
 [ 0.  0.  0.]]
[[ 0.  0.  1.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

暫無
暫無

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

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