如何将Python字典对象转换为numpy数组
我有一个Python字典对象,里面的键是日期类型的对象,值是元组对象:
>>> 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
。