如何将Python字典对象转换为numpy数组

3

我有一个Python字典对象,其中键是datetime.date对象,值是元组对象:

>>> data_dict
{datetime.date(2006, 1, 1): (5, 3),
 datetime.date(2006, 1, 2): (8, 8),
 datetime.date(2006, 1, 3): (8, 5),
 datetime.date(2006, 1, 4): (3, 3),
 datetime.date(2006, 1, 5): (3, 3),
 datetime.date(2006, 1, 6): (4, 3),
...

我想要将它转换为numpy数组对象,格式如下:
dtype([('date', '|O4'), ('high', '<i1'), ('low', '<i1')])

我希望将数据存储在磁盘上以便日后使用,并在numpy、matplotlib等工具中进行学习。实际上,在查看了这个matplotlib示例之后,我考虑使用这种格式:http://matplotlib.sourceforge.net/users/recipes.html,但我不知道如何实现。

1个回答

8
以下内容将完成它:
arr = np.array([(k,)+v for k,v in data_dict.iteritems()], \
         dtype=[('date', '|O4'), ('high', '<f8'), ('low', '<f8')])

如果您希望将arr用作recarray,您可以使用以下方法:
arr = arr.view(np.recarray)

这将使您能够通过名称引用字段,例如arr.date

1
小提示:对于字典,似乎需要使用sorted(data_dict.iteritems())。 - zetah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接