代码之家  ›  专栏  ›  技术社区  ›  muni

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

  •  1
  • muni  · 技术社区  · 8 年前

    我正在为一些问题构建一组KD树。但我意识到,如果我能够以某种方式将KD树写入硬盘,然后再读取它们,我就不需要反复加载文件和构建同一组KD树。

    搜索了一下后,我想到了下面的示例,但不确定它将文件转储到哪里。如何将其存储在硬盘中的某个示例位置(C:\my\u文件):

    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)

    有可能吗?还有什么其他可行的方法?

    1 回复  |  直到 8 年前
        1
  •  2
  •   sascha    8 年前

    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协议,相对路径与绝对路径以及co,有很多要说的,但文档是达到这一目的的途径!

    (有时,当对象还没有准备好进行酸洗时,您可能会遇到问题(同样是python文档)。但就scipy和sklearn而言,酸洗应该可以用于最有趣的用例)

    推荐文章