[Numpy-discussion] Fastest way to save a dictionary of numpy record arrays

Warren Weckesser warren.weckesser at enthought.com
Mon Jun 14 20:34:08 EDT 2010


Robert Kern wrote:
> On Mon, Jun 14, 2010 at 19:27, Warren Weckesser
> <warren.weckesser at enthought.com> wrote:
>   
>> Robert Kern wrote:
>>     
>>> On Mon, Jun 14, 2010 at 19:00, Vishal Rana <ranavishal at gmail.com> wrote:
>>>
>>>       
>>>> Hi,
>>>> I have dictionary of numpy record arrays, what could be fastest way to
>>>> save/load to/from a disk. I tried numpy.save() but my dictionary is lost and
>>>> cPickle seems to be slow.
>>>>
>>>>         
>>> numpy.savez() will save a dictionary of arrays out to a .zip file.
>>> Each key/value pair will map to a file in the .zip file with a file
>>> name corresponding to the key.
>>>
>>>
>>>       
>> Hey Robert,
>>
>> If I expand the dictionary to keyword arguments to savez, it works
>> beautifully:
>>
>> -----
>> In [4]: a = np.array([[1,2,3],[4,5,6]])
>>
>> In [5]: b = np.array([('foo',1),('bar',2)], dtype=[('name', 'S8'),
>> ('code', int)])
>>
>> In [6]: d = dict(a=a, b=b)
>>
>> In [7]: np.savez('mydata.npz', **d)
>>
>> In [8]: q = np.load('mydata.npz')
>>
>> In [9]: q['a']
>> Out[9]:
>> array([[1, 2, 3],
>>       [4, 5, 6]])
>>
>> In [10]: q['b']
>> Out[10]:
>> array([('foo', 1), ('bar', 2)],
>>      dtype=[('name', '|S8'), ('code', '<i4')])
>> -----
>>
>>
>> But if I just pass in the dictionary to savez:
>>     
>
> Don't.
>
>   

That's what I suspected.  Thanks.





More information about the NumPy-Discussion mailing list