0

是否可以将 Networkx Graph 对象存储在 CBOR 对象中(通过 CBOR 序列化数据)?我有相当大的 NetworkX 图,需要序列化和存储以供进一步分析。Pickle 似乎太慢并且创建了太大的文件。我没有看到足够的 CBOR 文档来正确确定我的任务是否可行。

4

1 回答 1

1

我不知道CBOR的表现。从我读到的内容来看,使用 json 似乎非常有效。所以我测试了序列化,它工作得很好:

from networkx.readwrite import json_graph
import cbor

G = nx.Graph()
G.add_weighted_edges_from([('a1', 'a2', 1.0), ('a2', 'a3', 0.5), 
                           ('a3', 'a5', 1.0), ('a4', 'a8', 1.0), ('a8', 'a9', 0.8)])

# Serialize graph
res = json_graph.node_link_data(G)  # export Networkx to JSON
serialized = cbor.dumps(res)  # serialize in binary format

deserialized = cbor.loads(serialized)  # deserialize
H = json_graph.node_link_graph(deserialized)  # Get back to original graph
于 2016-02-04T22:57:06.620 回答