Pynote

Python、機械学習、画像処理について

networkx - 近傍を取得する方法について

近傍を取得する関数、属性一覧

関数名 free functions Graph DiGraph MultiGraph MultiDiGraph
nbunch_iter
neighbors
__getitem__
adj
adjacency
all_neighbors
common_neighbors
non_neighbors

import networkx as nx

G = nx.Graph([(1, 2, {'size': 1}),
              (1, 3, {'size': 2}),
              (2, 3, {'size': 3}),
              (2, 4)])
draw_graph(G)

neighbors: 近傍を取得する。

print(list(G.neighbors(2)))  # [1, 3, 4]

G.adj: 近傍を取得する。

print(type(G.adj))  # <class 'networkx.classes.coreviews.AdjacencyView'>
print(G.adj)  # {1: {2: {'size': 1}, 3: {'size': 2}}, 2: {1: {'size': 1}, 3: {'size': 3}, 4: {}}, 3: {1: {'size': 2}, 2: {'size': 3}}, 4: {2: {}}}

ある点の近傍を取得する。

AdjacencyView は subscriptable である。

print(G.adj[2])  # {1: {'size': 1}, 3: {'size': 3}, 4: {}}

AtlasView は subscriptable である。

print(G.adj[2][1])  # {'size': 1}

item() 関数で点と属性を iterate できる。

for nbr, data in G.adj[2].items():
    print(nbr, data)
# 1 {'size': 1}
# 3 {'size': 3}
# 4 {}

__getitem__: ある点の近傍を取得する。

グラフも subscriptable である。

print(type(G[2]))  # <class 'networkx.classes.coreviews.AtlasView'>
print(G[2])  # {1: {'size': 1}, 3: {'size': 3}, 4: {}}

adjacency: 近傍を取得する。

print(type(G.adjacency()))  # <class 'dict_itemiterator'>

for n, nbr in G.adjacency():
    print(n, nbr)
# 1 {2: {'size': 1}, 3: {'size': 2}}
# 2 {1: {'size': 1}, 3: {'size': 3}, 4: {}}
# 3 {1: {'size': 2}, 2: {'size': 3}}
# 4 {2: {}}

all_neighbors: 近傍を取得する。

print(list(nx.all_neighbors(G, 2)))  # [1, 3, 4]

common_neighbors: 指定した2点に共通する近傍を取得する。

print(list(nx.common_neighbors(G, 1, 2)))  # [3]

non_neighbors: 指定した点の近傍でない点を取得する。

print(list(nx.non_neighbors(G, 1)))  # [4]

有向グラフで近傍を取得する関数、属性一覧

関数名 free functions Graph DiGraph MultiGraph MultiDiGraph
predecessors
pred
successors
succ

import networkx as nx

G = nx.DiGraph([(1, 2, {'size': 1}),
                (1, 3, {'size': 2}),
                (2, 3, {'size': 3}),
                (2, 4)])
draw_graph(G)

print(list(G.predecessors(2)))  # [1]
print(G.pred[2])  # {1: {'size': 1}}
print(list(G.successors(2)))  # [3, 4]
print(G.succ[2])  # {3: {'size': 3}, 4: {}}