我有这样的字典:
a = dict(zip( ['k1', 'k2', 'k3', 'k4'],
... [ [1,2,3,4], [10,20,30,40], [100,200,300,400], [1000,2000,3000,4000]])
>>> a
{'k1': [1, 2, 3, 4], 'k2': [10, 20, 30, 40], 'k3': [100, 200, 300, 400], 'k4': [1000, 2000, 3000, 4000]}
我想要做的是:获取多个键的值并从中创建多维 numpy 数组。像这样的东西:
result = numpy.array( [a[x] for x in ('k1' , 'k3')]
我试过这个代码:
ar = numpy.array([])
for el in ['k1', 'k3']:
ar = numpy.r_[ar, num_dict[el]]
ar = ar.reshape(2,len(ar)/2)
但是是否有一些内置函数或更优雅的方式?
我只需要一个来自数据的 numpy 数组,所以我找不到没有循环的方法。我创建功能:
def loadFromDict( fieldnames, dictionary ):
''' fieldnames - list of needed keys, dictionary - dict for extraction
result - numpy.array size of (number of keys, lengths of columns in dict)'''
ar = numpy.zeros( (len(fieldnames), len(dictionary[fieldnames[0]])) )
for c,v in enumerate(fieldnames,0):
ar[c,:] = dictionary[v]
return ar
在我的例子中,字典的所有列的长度都相同。无论如何,很容易实现它们是不同的:用于[len(v) for v in dictionary.values()]
获取所有长度,或查找当前键的长度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句