Vishal, Robert's code does the trick, but--in case you are new to numpy record arrays-I thought I'd point out that the array itself already acts like a list of dictionaries: In [6]: import numpy as np In [7]: dt = np.dtype([('name', 'S30'),('age',int),('weight',float)]) In [8]: r = np.array([('Bill',31, 260.0), ('Fred', 15, 145.0)], dtype=dt) In [9]: r[0]['name'] Out[9]: 'Bill' In [10]: r[1]['age'] Out[10]: 15 Warren Robert Kern wrote:
On Thu, Feb 4, 2010 at 16:26, Vishal Rana <ranavishal@gmail.com> wrote:
How do I convert the numpy record array below: recs = [('Bill', 31, 260.0), ('Fred', 15, 145.0)] r = rec.fromrecords(recs, names='name, age, weight', formats='S30, i2, f4') to a list of dictionary like: [{'name': 'Bill', 'age': 31, 'weight': 260.0}, 'name': 'Fred', 'age': 15, 'weight': 145.0}]
Assuming that your record array is only 1D:
In [6]: r.dtype.names Out[6]: ('name', 'age', 'weight')
In [7]: names = r.dtype.names
In [8]: [dict(zip(names, record)) for record in r] Out[8]: [{'age': 31, 'name': 'Bill', 'weight': 260.0}, {'age': 15, 'name': 'Fred', 'weight': 145.0}]