Python 如何将Numpy数组添加到字典
如何在python中将两个numpy数组添加到字典中Python 如何将Numpy数组添加到字典,python,arrays,numpy,dictionary,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.,
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)}
c=dict(zip(a[:,0],b))
会将a
和b
变量转换为字典。不过,我不确定这是否就是你想要的。使用词典理解:
:
我想你是想把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
作为元素的列表
,如[[1],[3]]
,则可以执行以下操作:
a = [i[0] for i in a]
#[[1], [3]] --> [1, 3]
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),然后使用嵌套列表a中的值作为键。对于这些键中的每个键,将列表b中的数组分配到相同的索引(i)。请注意,这要求a的索引对应于b中的相同位置。它返回一个错误,即-TypeError:unhabable type:'numpy.ndarray'哦,对了,我没有注意到a的确切形式。我猜你的意思是a=np.array([[1],[3]])
。如果是这样的话,dict(zip(a[:,0],b))
应该可以。解决方案必须是可伸缩的吗?是的,它必须是。仍然会给出一个错误TypeError:unhable type:'numpy.ndarray'
对不起,工作非常完美!!我在键入代码时出错。