将 Kd-Tree 对象转储到硬盘以供重用

Dumping Kd-Tree object to hard disk for reuse

我正在构建一组 KD 树来解决一些问题。但我意识到,如果我设法以某种方式写入硬盘,然后再次读取它们,我就不需要一次又一次地加载文件和构建同一组 KD 树。

经过一番搜索,我偶然发现了下面的示例,但不确定它会将文件转储到哪里。如何将其存储在硬盘中的某个示例位置(C:\my_file):

import pickle
import scipy.spatial
tree=scipy.spatial.cKDTree([[1,2,3]])
raw = pickle.dumps(tree)

t2 = pickle.loads(raw)

保存后从该位置重新加载:pickle.load(C:\my_file\raw)

这可能吗?还有哪些其他可行的方法?

docs 开始。

那你一路上会碰到这个用法:

with open('my_path/my_file.pickle', 'wb') as f:
    pickle.dump(tree, f)                # pickle.dump != pickle.dumps !

with open('my_path/my_file.pickle', 'rb') as f:
    tree = pickle.load(f)

关于 pickle-protocols、相对路径与绝对路径等有很多要说的,但文档是实现这些的方法!

(有时您可能会在对象尚未准备好进行酸洗时遇到问题(再次:python-docs)。但是就 scipy 和 sklearn 而言,酸洗应该是最有趣的use-cases)