В чем разница между 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 с содержимым массива и подкласс массива.