Как преобразовать объект словаря Python в массив numy - PullRequest
3 голосов
/ 19 сентября 2011

У меня есть объект Python dict с ключом в качестве объекта 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),
...

, и я хочу преобразовать его в объект массива в следующем формате:

dtype([('date', '|O4'), ('high', '<i1'), ('low', '<i1')])

чтобы я мог сохранить его на диске, а потом поработать с ним и выучить на немом языке matplotlib ...

На самом деле, я подумал об использовании этого формата после просмотра этого matplotlibпримеры: http://matplotlib.sourceforge.net/users/recipes.html но не могу найти выход, как туда добраться.

1 Ответ

8 голосов
/ 19 сентября 2011

Будет делать следующее:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...