将numpy记录数组转换为字典列表的有效方法 [英] Efficient way to convert numpy record array to a list of dictionary
问题描述
如何转换下面的numpy记录数组:
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')
到字典列表,如:
[{'name': 'Bill', 'age': 31, 'weight': 260.0},
'name': 'Fred', 'age': 15, 'weight': 145.0}]
推荐答案
Answered at Numpy-discussion by Robert Kern
该讨论的结论电子邮件副本:
Copy of concluding email from that discussion:
如何转换下面的numpy记录数组: recs = [('Bill',31,260.0),('Fred',15,145.0)] r = rec.fromrecords(记录,名称='名称,年龄,体重',格式='S30,i2,f4') 到像这样的字典列表: [{'name':'Bill','age':31,'weight':260.0}, 'name':'Fred','age':15,'weight':145.0}]
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:
输入[6]:r.dtype.names输出[6] :(名称",年龄",体重")
In [6]: r.dtype.names Out[6]: ('name', 'age', 'weight')
在[7]中:名称= r.dtype.names
In [7]: names = r.dtype.names
在[8]中:[在r中记录的字典(dict(zip(名称,记录)))]在[8]中:[{'age': 31,'name':'Bill','weight':260.0},{'age':15,'name':'Fred', 'weight':145.0}]
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}]
这篇关于将numpy记录数组转换为字典列表的有效方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!