将所有列表值连接到python

时间:2017-05-05 13:26:56

标签: python numpy dictionary concatenation

我想将python dict中的所有numpy数组(所有相同大小)连接到一个新数组。

dict = {'some_key_1':np.array([1,2,3,4]), 'some_key_2':np.array([2,3,4,5]), ...}

我希望看到的结果是:

result = np.array([[1,2,3,4],[2,3,4,5]])

最好的办法是什么?

编辑:对于python 2和3,解决方案似乎略有不同。接受的答案解决了python 3的问题。

3 个答案:

答案 0 :(得分:1)

可能是最简单的方法:

result = np.array(list(dict.values()))

使用list,字典的值将存储在列表中(即,获得每个项目为numpy数组的列表)。然后,通过应用np.array(),这个numpy数组列表可以转换为numpy数组。

但是,您不应该使用dict作为字典的名称,因为这会影响内置名称dict。相反,使用例如:

result = np.array(list(dct.values()))

并确保将字典重命名为dct

答案 1 :(得分:1)

在Python 3中,您需要先将dict.values()转换为列表。

  

dict.keys(),dict.values()和dict.items()返回的对象   是视图对象。它们提供了字典的动态视图   条目,表示当字典更改时,视图   反映了这些变化。   (https://docs.python.org/3/library/stdtypes.html#typesmapping

import numpy as np
data = {'some_key_1':np.array([1,2,3,4]), 'some_key_2':np.array([2,3,4,5])}
print(np.array(list(data.values())))
# [[1 2 3 4]
# [2 3 4 5]]

你得到一个二维数组,行以随机顺序排列(Python dict s是无序的。)

要获得一维数组,您可以使用np.concatenate

print(np.concatenate(list(data.values())))
# [1 2 3 4 2 3 4 5]

如果订单很重要,您可以使用元组列表或OrderedDict而不是dict

答案 2 :(得分:0)

您可以使用dictionary.values()获取字典的所有值,并将其传递给numpy.array

a()

请不要使用dict作为名称,它是python中的保留关键字

示例

import numpy as np
np.array(list(dict.values()))

<强>输出

import numpy as np
data = {'some_key_1':np.array([1,2,3,4]), 'some_key_2':np.array([2,3,4,5])}
np.array(list(data.values()))