如何通过Pickle将构建的KD-Tree持久化到指定路径C:\my_file?
嘿,这问题我熟!要把你的cKDTree持久化到指定的C:\my_file路径,只需要调整一下pickle的用法就行——你之前用的pickle.dumps()是生成序列化后的字节字符串,而要直接写入到文件里,得用pickle.dump()(注意少个s)。下面是完整的修改方案:
将KD-Tree保存到指定路径的实现
1. 保存KD-Tree到C:\my_file
import pickle import scipy.spatial # 先构建你的KD-Tree tree = scipy.spatial.cKDTree([[1,2,3]]) # 指定目标路径,Windows下推荐用原始字符串避免转义问题 target_path = r"C:\my_file" # 用二进制写入模式打开文件,直接序列化写入 with open(target_path, 'wb') as file: pickle.dump(tree, file)
2. 从指定路径加载KD-Tree
之后需要复用这个树的时候,用pickle.load()读取文件即可:
import pickle import scipy.spatial load_path = r"C:\my_file" with open(load_path, 'rb') as file: loaded_tree = pickle.load(file) # 验证一下是否正常工作,比如查询最近邻 print(loaded_tree.query([1,2,3])) # 应该输出(0.0, 0)
关键注意点
- 路径写法:Windows系统中,路径里的反斜杠
\需要特殊处理——要么写成双反斜杠C:\\my_file,要么用原始字符串前缀r(比如r"C:\my_file"),这样不会把\m这类组合当成转义字符。 - 文件模式:必须用二进制模式
wb(写入)和rb(读取),因为pickle序列化的是字节数据,不能用文本模式(w/r)。
内容的提问来源于stack exchange,提问作者muni
相关产品推荐
相关产品推荐

