2024-04-18 04:44:15 发布
网友
假设我有一个包含100k对字符串的字典和一个numpy矩阵(100k,500)。我想将它们保存在同一个文件中的磁盘上。在
我现在要做的是使用cPickle转储字典,然后scipy.io.savemat将矩阵转储。这样,卸载/装载速度非常快。但问题是,由于我使用不同的方法,我得到了2个文件,我希望只有一个文件包含我的2个对象。我该怎么做?在
我可以在同一个文件中对它们进行cPickle,但是在大数组上cPickle速度非常慢。在
您可以使用dill。dill.dump访问并使用来自numpy的dump方法来存储array或{}对象,因此它的存储方式与直接从numpy对象的方法相同。你只要dill.dump字典。在
dill
dill.dump
numpy
dump
array
dill还可以以压缩格式存储pickle,但速度较慢。正如在注释中提到的,还有joblib,它也可以做与dill相同的操作……但是基本上,joblib利用{}(这是另一个序列化程序)或者也可以使用dill来执行序列化。在
joblib
如果您有一个巨大的字典,并且不需要一次所有的内容…也许更好的选择是klepto,它可以使用高级序列化方法(从dill)将dict存储到磁盘(或数据库)上的多个文件中,内存中有一个代理dict,它使您只能获取所需的条目。在
klepto
dict
所有这些包都为标准python和numpy对象提供了一个快速统一的dump。在
您可以使用}对象,因此它的存储方式与直接从
dill
。dill.dump
访问并使用来自numpy
的dump
方法来存储array
或{numpy
对象的方法相同。你只要dill.dump
字典。在dill
还可以以压缩格式存储pickle,但速度较慢。正如在注释中提到的,还有joblib
,它也可以做与dill
相同的操作……但是基本上,joblib
利用{dill
来执行序列化。在如果您有一个巨大的字典,并且不需要一次所有的内容…也许更好的选择是
klepto
,它可以使用高级序列化方法(从dill
)将dict
存储到磁盘(或数据库)上的多个文件中,内存中有一个代理dict
,它使您只能获取所需的条目。在所有这些包都为标准python和
numpy
对象提供了一个快速统一的dump
。在相关问题 更多 >
编程相关推荐