Эффективный способ преобразовать numpy записывает массив к списку словаря

Как делают я преобразовываю массив записи numpy ниже:

recs = [('Bill', 31, 260.0), ('Fred', 15, 145.0)]
r = rec.fromrecords(recs, names='name, age, weight', formats='S30, i2, f4')

к списку словаря как:

[{'name': 'Bill', 'age': 31, 'weight': 260.0}, 
'name': 'Fred', 'age': 15, 'weight': 145.0}]
12
задан Vishal 4 February 2010 в 22:21
поделиться

2 ответа

Ответ Роберта Керна на Numpy-обсуждения


Копия заключительного электронного письма этого обсуждения: {{ 1}}

Как преобразовать массив записей numpy ниже: recs = [('Bill', 31, 260.0), ('Fred', 15, 145.0)] r = rec.fromrecords (recs, names = 'name, age, weight', sizes = 'S30, i2, f4') в список словаря, например: [{'name': «Билл», «возраст»: 31, «вес»: 260,0}, «имя»: «Фред», «возраст»: 15, «вес»: 145,0}]

Предполагая, что ваш рекорд массив только 1D:

In [6]: r.dtype.names Out [6]: ('name', 'age', 'weight')

In [7]: names = r.dtype. names

В [8]: [dict (zip (names, record)) для записи в r] Out [8]: [{'age': 31, 'name': 'Bill', 'вес': 260,0}, {'возраст': 15, 'имя': 'Фред', 'вес': 145,0}]

-1
ответ дан 2 December 2019 в 19:54
поделиться

Я не уверен, есть ли для этого встроенная функция или нет, но следующее может помочь.

>>> [dict(zip(r.dtype.names,x)) for x  in r]
[{'age': 31, 'name': 'Bill', 'weight': 260.0}, 
{'age': 15, 'name': 'Fred', 'weight': 145.0}]
17
ответ дан 2 December 2019 в 19:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: