如何在Python中保存大(不大)的dictonaries?

Fra*_*ter 4 python file-io dictionary numpy scipy

我的字典将由几千个键组成,每个键的值为1000x1000 numpy数组.我不需要该文件是人类可读的.小尺寸和快速装载时间更重要.

首先我尝试了savemat,但我遇到了问题.Pickle导致了一个巨大的文件.我对csv假设相同.我已经阅读了推荐使用json(可读文本可能很大)或db(假设复杂)的帖子.你会为我的案子推荐什么?

jte*_*ace 6

如果你有一个字典,其中键是字符串,值是数组,如下所示:

>>> import numpy
>>> arrs = {'a': numpy.array([1,2]),
            'b': numpy.array([3,4]),
            'c': numpy.array([5,6])}
Run Code Online (Sandbox Code Playgroud)

您可以使用numpy.savez按键将它们保存到压缩文件中:

>>> numpy.savez('file.npz', **arrs)
Run Code Online (Sandbox Code Playgroud)

要加载它:

>>> npzfile = numpy.load('file.npz')
>>> npzfile
<numpy.lib.npyio.NpzFile object at 0x1fa7610>
>>> npzfile['a']
array([1, 2])
>>> npzfile['b']
array([3, 4])
>>> npzfile['c']
array([5, 6])
Run Code Online (Sandbox Code Playgroud)