使用Multidict将Numpy数组转换为字典

2024-09-28 17:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,它以Numpy数组格式生成一个矩阵,其中第一列包含一个表示索引的变量,其他列包含其他变量

我想将其转换为一个字典,其中矩阵的每一行都成为一个条目,第一列值(索引)作为键,其他列变量作为具有相同键的值

比如:

matrix = np.array([ [1, a,b,c], [2, d,e,f], [3, g,h,i] ])

应成为以下格式的词典:

{1: a, b, c
 2: d, e, f
 3: g, h, i}

其中每个a, d, g具有相同的密钥,b, e, h具有相同的密钥等

使用multidict(正如我在Gurobi中使用优化模型的代码一样),我已经能够使用以下方法对一行执行此操作:

key1,value1,value2,value3 = gurobipy.multidict({tuple(matrix[0,0]):tuple(matrix[0,1:]))})

但是,我不能让它对矩阵的所有行都起作用。如果我将行的索引从0更改为全部:

key,value1,value2,value3 = gurobipy.multidict({tuple(matrix[:,0]):tuple(matrix[:,1:]))})

我收到一个错误“没有足够的值来解包”。值的第二个参数tuple(matrix[:,1:])似乎没有(正确地)解析1:end中每行的所有列条目

如果我为每个值指定列索引,它确实有效:

key1,value1,value2,value3 = gurobipy.multidict({tuple(matrix[:,0]):[tuple(matrix[:,1]),tuple(matrix[:,2]),tuple(matrix[:,3])]})

但是,由于列的数量可能会发生变化,这对我来说并不可靠。因此,我希望每一行的代码都将第一列索引值作为主键、唯一键,并将所有后续列变量作为每一列具有相同键的值

有没有办法重写我的坏代码来实现这一点


Tags: 代码numpy格式密钥条目矩阵数组matrix