В чем разница между numpy.save() и joblib.dump() в Python?

Я сохранил много автономных моделей / матриц / массивов в Python и наткнулся на эти функции. Может ли кто-нибудь помочь мне, перечислив плюсы и минусы numpy.save() и joblib.dump()?

1 ответ

Вот критические разделы кода от 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 для сжатия), который является легковесным объектом, в котором хранится имя файла сохранения /zip с содержимым массива и подкласс массива.

Другие вопросы по тегам