如何用字典的值制作一个numpy数组?

时间:2018-07-25 16:02:20

标签: python numpy

如果我有一个像这样的字典:

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或任何循环?

2 个答案:

答案 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]])