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

3 投票
1 回答
12792 浏览
提问于 2025-04-17 02:35

我有一个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

撰写回答