【Python】networkx中如何獲取圖的鄰接矩陣

需要調取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]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章