如果我有一个像这样的字典:
sam = {1:np.array([1,2,3,4]), 2:np.array([2,4,6,8]) }
如何用这样的字典值制作一个numpy数组?
arr = ([[1,2,3,4],
[2,4,6,8]])
我认为np.fromiter(sam.values(), dtype=np.int16)
可能有效,但由于其dtype而无法正常工作。
是否有任何功能可以执行此操作,而不是使用for或任何循环?
答案 0 :(得分:2)
您可以stack这样的字典值:
arr = np.stack(sam.values())
>>> arr
array([[1, 2, 3, 4],
[2, 4, 6, 8]])
答案 1 :(得分:1)
除非您使用的是Python 3.7+,否则不认为字典是有序的。因此,这很麻烦,但可能。想法是按键对dict.items
进行排序以给出元组列表,然后提取值。
from operator import itemgetter as iget
res = np.array(list(map(iget(1), sorted(sam.items(), key=iget(0)))))
array([[1, 2, 3, 4],
[2, 4, 6, 8]])