我在Python中保存了许多离线模型/矩阵/数组,并遇到了这些函数。有人可以列举numpy.save()和joblib.dump()的优缺点来帮助我吗?

最佳答案

这是joblib的代码的关键部分,应予阐明。

def _write_array(self, array, filename):
    if not self.compress:
        self.np.save(filename, array)
        container = NDArrayWrapper(os.path.basename(filename),
                                   type(array))
    else:
        filename += '.z'
        # Efficient compressed storage:
        # The meta data is stored in the container, and the core
        # numerics in a z-file
        _, init_args, state = array.__reduce__()
        # the last entry of 'state' is the data itself
        zfile = open(filename, 'wb')
        write_zfile(zfile, state[-1],
                            compress=self.compress)
        zfile.close()
        state = state[:-1]
        container = ZNDArrayWrapper(os.path.basename(filename),
                                        init_args, state)
    return container, filename

基本上,joblib.dump可以选择压缩一个数组,它可以使用numpy.save存储到磁盘,或者(用于压缩)存储一个zip文件。另外,joblib.dump存储一个NDArrayWrapper(或用于压缩的ZNDArrayWrapper),这是一个轻量级的对象,用于存储带有数组内容的保存/压缩文件的名称以及数组的子类。

关于python - Python中的numpy.save()和joblib.dump()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26766599/

10-11 09:33