gpt4 book ai didi

python - networkx 删除节点属性

转载 作者:行者123 更新时间:2023-11-28 22:29:40 28 4
gpt4 key购买 nike

我已将 numpy 数组附加到 networkx 图中的节点。如何将图形以 gexf 格式存储在磁盘上? (没有 numpy 向量,因为它只是一些中间的东西......)

def create():
G = nx.Graph()
for i in range(256):
G.add_node(i, vector=np.arange(20))
for i in range(1,20):
for j in range(1,256, 10):
G.add_edge(i,j)

temp = tempfile.mktemp(suffix=".gexf")
print("dumping G = (V: %s, E: %s) to disk %s"
% (len(G.nodes()), len(G.edges()), temp))
nx.write_gexf(G, temp)

然而,这打破了。我是 python 的新手,但对我来说似乎 ndarray 不可序列化?!那么,如何告诉 networkx 忽略该节点属性?

File "...lib\site-packages\networkx\readwrite\gexf.py", line 430, in add_attributes
attr_id = self.get_attr_id(make_str(k), self.xml_type[val_type],
KeyError: <type 'numpy.ndarray'>

最佳答案

我通过从数据项中删除属性“vector”解决了这个问题:

for (n,d) in G.nodes(data=True):
del d["vector"]

完整的 MWE:

def create():
G = nx.Graph()
for i in range(256):
G.add_node(i, vector=np.arange(20))
for i in range(1,20):
for j in range(1,256, 10):
G.add_edge(i,j)

temp = tempfile.mktemp(suffix=".gexf")
print("dumping G = (V: %s, E: %s) to disk %s"
% (len(G.nodes()), len(G.edges()), temp))
for (n,d) in G.nodes(data=True):
del d["vector"]
nx.write_gexf(G, temp)

关于python - networkx 删除节点属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914486/

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