[英]networkx remove node attribute
我已經將numpy-array附加到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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.