首页 > 解决方案 > 序列化 Python 对象

问题描述

嗨,我有一个看起来像这样的课程。由于某些下游限制,必须将“数据集”对象保存到单个文件中。通常我会使用sparse.save_npz和保存一个文件X并保存一个 json 文件meta_data(请参阅参考资料save_to_dir)。我想知道如何将“数据集”保存到单个文件中。我知道酸洗,但当稀疏矩阵变大时,酸洗似乎需要很长时间。有没有一种聪明的方法可以让我获取X.indptr, X.indices, X.data数组的字节并将它们附加到字节meta_data并以某种方式保存到单个文件中?或另一种方法?

import scipy.sparse as sparse
import json
from pathlib import Path

class Dataset: 
    def __init__(self, X: sparse.csr_matrix, meta_data: dict):
        self.X = X
        self.meta_data = meta_data

    def save_to_single_file(self, dest_file: str) -> None: 
        # TODO
    
    def save_to_dir(self, dir_name: str) -> None:
       save_dir = Path(dir_name)
       sparse.save_npz(self.X, save_dir / "X.npz")
       
       with open(save_dir / "meta_data.json", "w") as f:
           json.dump(self.meta_data, f)

标签: pythonserializationpicklesparse-matrix

解决方案


推荐阅读