需要調取networkx中graph實例的鄰接矩陣,搜“network 鄰接矩陣”沒有迅速找到解決方案。我寫一個吧。
錯誤獲取:
networkx中有個adjacency_matrix()函數,得到的鄰接表看形狀雖然是N*N,但是打印出來會發現是這個格式:
(0, 1) 1
(0, 30) 1
(0, 33) 1
(0, 99) 1
第一列是源頭和終止節點,第二列是權重。
但是,如果你下列語句遍歷,是會報錯的:ValueError: not enough values to unpack (expected 2, got 1)
# 錯誤示範
for (x,y), w in nx.adjacency_matrix(G):
print(x, y, w)
正確獲取:
import networkx as nx
import numpy as np
A=np.array(nx.adjacency_matrix(G).todense())
轉換爲numpy矩陣是因爲原始的格式不支持A[i][j]形式的索引。
成功得到鄰接矩陣,解決!
[[0 0 0 ... 0 0 1]
[0 0 1 ... 0 0 0]
[0 1 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 1]
[1 0 0 ... 0 1 0]]