NetworkX:从节点属性向图形添加边
NetworkX: add edges to graph from node attributes
我的节点有一个用逗号分隔的属性列表,我希望 networkx 比较它们,如果它们匹配,则在节点之间创建一条边。
这是我得到的,但它不起作用,关于如何改进我的方法有什么想法吗?
for node in G.nodes():
while len(G.node[n]['attr']) = (G.node[n+1]['attr']):
# compare attributes?
valid_target_found = False
while not valid_target_found:
target = random.randint(0,N-1)
# pick a random node
if (not target in G.node[n]['attr'])
and len(G.node[n]['attr']) = (G.node[n+1]['attr']):
valid_target_found = True
G.add_edge(node, target)
一个或多个参数可以匹配,但只需要一个就可以创建一条边
假设你有一个无向图,这可以使用
import networkx as nx
G = nx.Graph()
G.add_node('a', {'k': 1, 'b': 2})
G.add_node('b', {'x': 1, 'z': 2})
G.add_node('c', {'y': 1, 'x': 2})
for node_r, attributes in G.nodes(data=True):
key_set = set(attributes.keys())
G.add_edges_from([(node_r, node) for node, attributes in G.nodes(data=True)
if key_set.intersection(set(attributes.keys()))
and node != node_r])
print(G.edges())
我的节点有一个用逗号分隔的属性列表,我希望 networkx 比较它们,如果它们匹配,则在节点之间创建一条边。
这是我得到的,但它不起作用,关于如何改进我的方法有什么想法吗?
for node in G.nodes():
while len(G.node[n]['attr']) = (G.node[n+1]['attr']):
# compare attributes?
valid_target_found = False
while not valid_target_found:
target = random.randint(0,N-1)
# pick a random node
if (not target in G.node[n]['attr'])
and len(G.node[n]['attr']) = (G.node[n+1]['attr']):
valid_target_found = True
G.add_edge(node, target)
一个或多个参数可以匹配,但只需要一个就可以创建一条边
假设你有一个无向图,这可以使用
import networkx as nx
G = nx.Graph()
G.add_node('a', {'k': 1, 'b': 2})
G.add_node('b', {'x': 1, 'z': 2})
G.add_node('c', {'y': 1, 'x': 2})
for node_r, attributes in G.nodes(data=True):
key_set = set(attributes.keys())
G.add_edges_from([(node_r, node) for node, attributes in G.nodes(data=True)
if key_set.intersection(set(attributes.keys()))
and node != node_r])
print(G.edges())