繁体   English   中英

如何向networkx中的所有节点添加功能

[英]How to add a feature to all the nodes in networkx

如何在 0-1 之间分配一个数字来确定每个邻居的状态。 (原则上,每个节点都有一个与之关联的数字(状态);所以当我调用一个节点时;它具有其邻居的信息及其对应的状态!类似于 C 中的多维数组!

所以最终的信息是这样的; 节点 5 有 4 个邻居,分别是 1,2,3,4,每个邻居的 state 为 0.1,0.4,0.6,0.8。 我将在计算中进一步使用这些状态,因此最好使用包含此信息的数组。

import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

G = nx.barabasi_albert_graph(100,2)

for u in G.nodes():
    neighbors = nx.neighbors(G, u)
    print(neighbors)

我建议使用字典,将节点的邻居键和邻居状态的值作为节点的属性。

请参阅下面的几行示例:

import networkx as nx
import numpy as np

G = nx.barabasi_albert_graph(100,2)
neighbors={node:{neighbor:np.random.random() for neighbor in G.neighbors(node)} for node in G.nodes()}
nx.set_node_attributes(G, neighbors, 'neighbors')

然后,您可以通过调用G.nodes[0]['neighbors'] (此处为节点0的属性)来获取属性。 output 将给出:

{1: 0.7557385760337151, 2: 0.4739260575718104, 3: 0.9567801157103797, 6: 0.7574951042301828, 15: 0.30944298200257603, 20: 0.43632108378325585, 23: 0.36243300334095774, 26: 0.019615624900670037, 33: 0.555648986173134, 47: 0.6303121800990674, 49: 0.5832499539552732, 54: 0.4938474173850117, 80: 0.38306733444449415, 96: 0.19474203458699768}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM