从numpy数组创建字典“;ValueError:太多的值无法解包;

从numpy数组创建字典“;ValueError:太多的值无法解包;,numpy,Numpy,我正在尝试从一个相对较大的numpy数组创建一个字典。我尝试使用字典构造函数,如下所示: elements =dict((k,v) for (a[:,0] , a[:,-1]) in myarray) 我假设我这样做是错误的,因为我得到了错误:“ValueError:太多的值无法解包” numPy数组如下所示: [ 2.01206281e+13 -8.42110000e+04 -8.42110000e+04 ..., 0.00000000e+00 3.30000000e+02

我正在尝试从一个相对较大的numpy数组创建一个字典。我尝试使用字典构造函数,如下所示:

elements =dict((k,v) for (a[:,0] , a[:,-1]) in myarray)
我假设我这样做是错误的,因为我得到了错误:
“ValueError:太多的值无法解包”

numPy数组如下所示:

[  2.01206281e+13  -8.42110000e+04  -8.42110000e+04 ...,   0.00000000e+00
    3.30000000e+02  -3.90343147e-03]
我希望第一列
2.01206281e+13
是键,最后一列
-3.90343147e-03
是数组中每一行的值

我走对了吗/有没有更好的办法

谢谢

编辑:让我更清楚地说,我希望第一列是键,最后一列是值。我想对numpy数组中的每一行执行此操作

elements = dict( zip( * [ iter( myarray ) ] * 2 ) )

我们在这里看到的是,我们基于myarray列表创建了一个迭代器。我们把它放在一个列表中,然后加倍。现在,我们将相同的迭代器绑定到列表的第一和第二位,作为zip函数的参数,zip函数为dict创建者创建一个对列表。

这是一个很难回答的问题,不知道myarray到底是什么,但这可能会帮助您开始

>>> import numpy as np
>>> a = np.random.randint(0, 10, size=(3, 2))
>>> a
array([[1, 6],
       [9, 3],
       [2, 8]])
>>> dict(a)
{1: 6, 2: 8, 9: 3}


让我们知道您使用的是NumPy数组,以及它们的维数是多少,这会很有帮助。所以您只想使用第一个和最后一个值?那么中间的值呢?@MarcodeWit t中间的值是任意的,我不需要它们。数组是从一个包含数据+1的大文本文件生成的,用于在没有正确输入问题数据的情况下求解。
>>> a = np.random.randint(0, 10, size=(3, 5))
>>> a
array([[9, 7, 4, 4, 6],
       [8, 9, 1, 6, 5],
       [7, 5, 3, 4, 7]])
>>> dict(a[:, [0, -1]])
{7: 7, 8: 5, 9: 6}