如何保存与加载numpy Polynomial拟合结果?
NumPy Polynomial拟合结果的安全保存与加载方案
使用NumPy 1.14+版本的Polynomial便捷类完成拟合后,得到对象:
p = np.polynomial.Polynomial.fit(...)
这类拟合对象的重建需要三个核心参数:p.coef(系数)、p.domain(定义域)和p.window(窗口范围),仅保存系数会导致拟合结果计算错误。
如果分别将三个参数存为独立文件会非常繁琐,而直接用pickle序列化对象(比如保存为0维/1维数组并开启allow_pickle=True)会带来跨版本/平台兼容性问题,还存在安全风险,因此不推荐。
推荐实现方式:打包参数用np.savez保存
将三个必要参数打包进一个集合,通过np.savez保存为单文件,无需依赖pickle,兼容性和安全性更优:
保存代码:
# 打包参数并保存 np.savez("polyfit_params.npz", coef=p.coef, domain=p.domain, window=p.window)
加载并重建对象:
# 加载参数 params = np.load("polyfit_params.npz") # 重建Polynomial对象 p_loaded = np.polynomial.Polynomial(params["coef"], domain=params["domain"], window=params["window"])
这种方式既避免了pickle的弊端,又能一次性完成参数的保存与加载,操作简洁且可靠。
内容的提问来源于stack exchange,提问作者Marvin van Aalst
相关产品推荐
相关产品推荐

