Python最有效的重新排列Dict的numpy数组的方法
以下代码创建此格式的dictPython最有效的重新排列Dict的numpy数组的方法,python,numpy,dictionary,Python,Numpy,Dictionary,以下代码创建此格式的dict {'a': array([1, 2...1000]), 'b': array([1, 2...1000]).... old_dict = dict(a=np.array([]), b=np.array([]), c=np.array([]), new_dict=np.array([]), e=np.array([]), f=np.array([]),
{'a': array([1, 2...1000]), 'b': array([1, 2...1000])....
old_dict = dict(a=np.array([]),
b=np.array([]),
c=np.array([]),
new_dict=np.array([]),
e=np.array([]),
f=np.array([]),
g=np.array([]),
h=np.array([]))
for x in range(10000):
old_dict['a'] = np.append(old_dict['a'], x)
old_dict['b'] = np.append(old_dict['b'], x)
old_dict['c'] = np.append(old_dict['c'], x)
old_dict['d'] = np.append(old_dict['d'], x)
old_dict['e'] = np.append(old_dict['e'], x)
old_dict['f'] = np.append(old_dict['f'], x)
old_dict['g'] = np.append(old_dict['g'], x)
old_dict['h'] = np.append(old_dict['h'], x)
我想把这个dict转换成如下的dict列表
[{'a': 1, 'b': 1....}, {'a': 2, 'b': 2....},.....]
我已经想出了这个密码
new_list_dict = []
for i, (key, val) in enumerate(old_dict.items()):
_d = {}
for k, v in old_dict.items():
_d[k] = v[i]
new_list_dict.append(_d)
但是你能推荐最快的(矢量化的)方法吗?
items()
是最接近“矢量化”访问字典的方法。您不能将d[k]=v
字典设置“矢量化”,尽管我相信有一种方法可以从键列表和值列表创建字典(我不做高级字典工作)。值得一提的是,您最初创建字典的速度很慢<代码>np。在循环中追加速度很慢。列表附加更好。您有兴趣创建具有这些精确数字的代码吗?或者数字1到1000只是真实数据的替代品?它们是真实数据的替代品,真实数据的值是字符串、整数和浮点的混合体。(这些数据最初都是在一个我因性能差而迁移掉的文件中)最初的dict是以一种完全不同的方式创建的,我很高兴它是如何创建的。关于k,V=old_dict.keys(),old_dict.values()
[dict(zip(k,V))for V in zip(*V)]
?