【问题标题】:Dumping Kd-Tree object to hard disk for reuse将 Kd-Tree 对象转储到硬盘以供重用
【发布时间】:2018-09-09 13:00:40
【问题描述】:

我正在为一些问题构建一组 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)

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

【问题讨论】:

  • pickle.dump(kdtree, file) 腌制到文件中,pickle.load(file) 可用于再次加载树。您正在查看 dumps 转储到内存中的字符串。

标签: python pickle dump hard-drive kdtree


【解决方案1】:

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 而言,对于大多数有趣的用例来说,腌制应该是可能的)

【讨论】:

  • 使用反函数; pickle.load (如记录)。
猜你喜欢
  • 2015-02-05
  • 2014-01-27
  • 2013-12-29
  • 2011-03-22
  • 2015-10-15
  • 2013-02-26
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多