2011-09-19 37 views
3

我有蟒蛇字典对象与主要为datetime.date对象和值元组对象:如何Python字典对象转换为numpy的阵列

>>> 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但无法找到我的出路如何到达那里。

回答

8

下面将做到这一点:

arr = np.array([(k,)+v for k,v in data_dict.iteritems()], \ 
     dtype=[('date', '|O4'), ('high', '<f8'), ('low', '<f8')]) 

然后,如果您希望使用arrrecarray,你可以使用:

arr = arr.view(np.recarray) 

这将使你的名字,例如引用域arr.date

+1

小方面说明:排序(data_dict.iteritems())似乎需要为字典 – zetah