【Python】networkxで図の隣接行列をどのように取得するか
798 ワード
networkxのgraphインスタンスの隣接マトリクスを呼び出す必要があります.「network隣接マトリクス」を検索すると、解決策が迅速に見つかりません.一つ書きましょう.
エラー取得:
Networkxにadjacency_がありますmatrix()関数は,得られた隣接表から見た形状はN*Nであるが,印刷するとこの形式であることがわかる.
(0, 1) 1 (0, 30) 1 (0, 33) 1 (0, 99) 1
最初のカラムはソースノードと終了ノードで、2番目のカラムはウェイトです.
しかし、次の文を遍歴すると、ValueError:not enough values to unpack(expected 2,got 1)が間違っています.
#エラー・デモンストレーション
for (x,y), w in nx.adjacency_matrix(G):
print(x, y, w)
正しく取得:
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]]
エラー取得:
Networkxにadjacency_がありますmatrix()関数は,得られた隣接表から見た形状はN*Nであるが,印刷するとこの形式であることがわかる.
(0, 1) 1 (0, 30) 1 (0, 33) 1 (0, 99) 1
最初のカラムはソースノードと終了ノードで、2番目のカラムはウェイトです.
しかし、次の文を遍歴すると、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]]