如何在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)}
答案 0 :(得分:3)
c = dict(zip(a[:,0], b))
会将您的a
和b
变量转换为字典。不过,我不确定这是否是您正在寻找的内容。
答案 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中的相同位置。