我试图在python中实现映射器算法,在我目前的步骤中,我有一个列表列表,其中每个元素包含一个集群连接的组件。从这里我想为每个集群创建一个节点,但是,因为列表不是像这样的可编程函数代码:
for cluster in cluster_array:
G.add_node(cluster)
不起作用。我的另一个想法是为列表中的多个元素创建节点,如下所示:
for cluster in range(len(cluster_array)):
G.add_node(cluster)
我的问题是,如果我使用后一个函数来创建我的节点。如何将节点与其相应的连接组件列表相关联?
答案 0 :(得分:0)
这取决于你的意思"将节点与其连接的组件相关联"。如果您只需要将信息存储在节点中,则可以使用属性。
import networkx as nx
# define some clusters
cluster_array = [
['a','b','c'],
['X', 'Y', 'Z']]
# construct graph, with arbitrary label for nodes and the cluster info
# as an attribute. (Here, the attribute is called "members")
G = nx.Graph()
for i, cluster in enumerate(cluster_array):
G.add_node(i, members=cluster)
您可以通过各种方式访问属性,例如:
print(G.nodes(data=True))
>>> [(0, {'members': ['a', 'b', 'c']}), (1, {'members': ['X', 'Y', 'Z']})]
print(nx.get_node_attributes(G, 'members'))
>>> {0: ['a', 'b', 'c'], 1: ['X', 'Y', 'Z']}