我有图A.对于图A中的每个节点,我使用一些规则来转换节点的名称并决定将其添加到图B中。
所以现在我从B派生了B.我想知道是否有可能在A中的原始节点和B中的转换节点之间创建某种链接。
我无法找到使用networkx库执行此操作的方法。任何指针都会有所帮助......
答案 0 :(得分:1)
节点可以具有属性。在图A中的每个节点中,您可以创建一个属性来保存图B中的相应节点。
在下面的代码中,图A有3个节点:1,2和3.图B是用节点1,4和9创建的(A中节点值的平方)。当B中的每个节点都被创建时,它的值存储在发起它的A节点的b_node属性中。
import networkx as nx
def main():
# Create graph A
a = nx.Graph()
a.add_node(1)
a.add_node(2)
a.add_node(3)
# Create graph B with nodes that are squares of the nodes in A
# Add to each node in A an attribute (b_node)
# to hold the corresponding node in B
b = nx.Graph()
for node in a:
a.add_node(node, b_node=node * node)
b.add_node(node * node)
print("A:")
print(a.nodes.data())
print("\nB:")
print(b.nodes.data())
if __name__ == '__main__':
main()
输出:
A:
[(1, {'b_node': 1}), (2, {'b_node': 4}), (3, {'b_node': 9})]
B:
[(1, {}), (4, {}), (9, {})]