Python 将列表字典转换为1D numpy数组

Python 将列表字典转换为1D numpy数组,python,arrays,numpy,dictionary,Python,Arrays,Numpy,Dictionary,我有一个Python3字典,里面有很长的列表(每个都有3000万个整数)。我想将所有这些列表缝合到一个numpy数组中。如何有效地执行此操作 以下 np.array(my_dict.values()) 似乎不起作用(我得到数组(dict_值([…],[…]))而不是平面1D numpy数组)。提前分配numpy数组: my_dict = {0:[0,3,2,1], 1:[4,2,1,3], 2:[3,4,2,1]} array = numpy.ndarray((len(my_dict), le

我有一个Python3字典,里面有很长的列表(每个都有3000万个整数)。我想将所有这些列表缝合到一个numpy数组中。如何有效地执行此操作

以下

np.array(my_dict.values())

似乎不起作用(我得到
数组(dict_值([…],[…]))
而不是平面1D numpy数组)。

提前分配numpy数组:

my_dict = {0:[0,3,2,1], 1:[4,2,1,3], 2:[3,4,2,1]}
array = numpy.ndarray((len(my_dict), len(my_dict.values()[0]))
然后可以将它们插入数组,如下所示:

for index, val in enumerate(my_dict.values()):
    arr[index] = val
>>> arr
array([[ 0.,  3.,  2.,  1.],
       [ 4.,  2.,  1.,  3.],
       [ 3.,  4.,  2.,  1.]])

如果您正在寻找平面1d阵列,可以使用
np.concatenate

>>> d = {'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'c': [1, 2, 3, 4, 5]}
>>> np.concatenate(list(d.values()))
array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])

为了获得基于键的有序连接:

np.array([d[k] for k in sorted(d.keys())]).flatten()
如果你不需要任何基于钥匙的订单,@Padraic Cunningham的方法是基于我在这里的计时最快的…

试试这个

列表(my_dict.values())


(补充评注)


dict.values()
返回
视图
而不是列表。参考

这创建了一个多维数组,而不是OP+1要求的1d数组,如果他不需要基于键的任何顺序,那么这是最快的方法
列表(chn)
[x代表chn中的x]
更有意义。它也更快。对我来说(Python 3)
np.array(list(chain(d.values()))
python3中的工作只需执行
np.array(list(my_dict.values()).flatte()
虽然这可能回答了作者的问题,但它缺少一些解释性词语和文档链接。如果没有一些短语,原始代码片段就没有多大帮助。您也可能会发现非常有帮助。请编辑您的答案。
np.array([d[k] for k in sorted(d.keys())]).flatten()