我想将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的问题。
答案 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()))