gpt4 book ai didi

Python Networkx 无法导出带有属性的 graphml

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:24 26 4
gpt4 key购买 nike

将 networkx 图转换为 graphml 时遇到以下问题(无法在此处发布所有代码,但这是要点)。 NetworkX版本为1.6.2

我有一个名为 G 的 networkx 有向图

G = nx.DiGraph()

使用格式为(AuthorA、AuthorB、Weight)的作者列表中的加权边填充它

G.add_weighted_edges_from(author_list)

我可以在这里导出 graphml,它工作正常

nx.write_graphml(G, 'test.graphml')

然后我计算图表上的页面排名

graph_metric = nx.pagerank_numpy(G, weight='weight')

然后向图中的节点添加属性

nx.set_node_attributes(G, 'pagerank', graph_metric)

如果我迭代图表,我可以打印出节点名称和页面排名

for n.d in G.nodes_iter(data=True):
print n, d

作者A {u'pagerank': 0.0076688948270074164}.........

但是如果在更新属性后我尝试从图表创建 graphml,则会收到以下错误:

File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 111, in generate_graphml

writer.add_graph_element(G)

File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 305, in add_graph_element

self.add_nodes(G,graph_element)

File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 262, in add_nodes

self.add_attributes("node", node_element, data, default)

File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 255, in add_attributes

scope=scope, default=default_value)

File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 242, in add_data

raise nx.NetworkXError('GraphML writer does not support '

NetworkXError: GraphML writer does not support dict types as data values.

想法?

最佳答案

好吧,它确实告诉您 - 您不能将字典作为 graphml 属性 - 在大多数情况下它们需要是数字类型或字符串。

不是答案,但在这里放置代码更容易。找到“坏”节点:

for node in G.node:
for attrib in G.node[node]:
if type(G.node[node][attrib]) == dict:
print node

关于Python Networkx 无法导出带有属性的 graphml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21099194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com