如何将Numpy数组添加到字典中

时间:2017-11-12 18:53:31

标签: python arrays numpy dictionary

如何在python中向字典中添加两个numpy数组?

a = [[1]
     [3]]

b = [array([[[ 41.,  179.],
             [ 451.,  254.],
             [ 449.,  10.],
             [ 53.,  256.]]], dtype=float32), array([[[ 181.,  313.],
             [  27.,  24.],
             [ 113.,  192.],
             [ 08.,  20.]]], dtype=float32)]

我希望将a和b显示为

c = {1: array([[ 41.,  179.],
            [ 451.,  254.],
            [ 449.,  10.],
            [ 53.,  256.]], dtype=float32),
     3: array([[ 181.,  313.],
           [  27.,  24.],
           [ 113.,  192.],
           [ 08.,  20.]], dtype=float32)}

3 个答案:

答案 0 :(得分:3)

c = dict(zip(a[:,0], b))会将您的ab变量转换为字典。不过,我不确定这是否是您正在寻找的内容。

答案 1 :(得分:1)

使用dictionary comprehension

我假设您打算将a定义为:

a = [1, 3]

然后您可以使用以下内容获取c

c = {e: b[i] for i, e in enumerate(a)}

给出了预期的输出:

{1: array([[[  41.,  179.],
    [ 451.,  254.],
    [ 449.,   10.],
    [  53.,  256.]]], dtype=float32),
 3: array([[[ 181.,  313.],
    [  27.,   24.],
    [ 113.,  192.],
    [   8.,   20.]]], dtype=float32)}

如果a实际上只有list element [[1], [3]],则可以执行以下操作:

a = [i[0] for i in a]
#[[1], [3]] --> [1, 3]

答案 2 :(得分:0)

c中的小错误,需要两个内部列表之间的逗号(这里是否需要嵌套列表?)

无论如何,这是一个提供所需输出的解决方案。

import numpy as np
c = {}

a = [[1],[3]]

b = [np.array([[[ 41.,  179.],
             [ 451.,  254.],
             [ 449.,  10.],
             [ 53.,  256.]]], dtype=np.float32), np.array([[[ 181.,  313.],
             [  27.,  24.],
             [ 113.,  192.],
             [ 08.,  20.]]], dtype=np.float32)]

for i in range(len(a)):
    c[a[i][0]] = b[i]

首先创建一个字典(c),然后使用嵌套列表中的值作为键。对于每个键,在列表b中以相同的索引(i)分配数组。请注意,这要求a的索引对应于b中的相同位置。