我有这样的字典:
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数组,所以我找不到没有循环的方法。 我创建函数:
在我的例子中,字典对所有列都有相同的长度。不管怎样,实现它们很容易:使用
[len(v) for v in dictionary.values()]
获取所有长度,或者查找当前键的长度。你知道吗列表列表是
np.array
的正常输入,因此您的列表理解是有意义的。你知道吗还是整本字典
通常字典里的词条都是在理解时一个接一个地选择的。
operator
有一个方便的类,可以通过一个调用获取多个键(我不认为它在速度上有多大区别):我认为用
r_
迭代不是一个好的选择。r_
只是concatenate
的掩护。如果必须迭代,则重复的concatante
会比较慢。最好建立一个列表,并在末尾创建数组(如列表理解中所示)。你知道吗相关问题 更多 >
编程相关推荐