我正在尝试从一个相对较大的numpy数组创建一个字典。我尝试像这样使用字典构造函数:
elements =dict((k,v) for (a[:,0] , a[:,-1]) in myarray)
我假设我这样做不正确,因为我收到错误:"ValueError: too many values to unpack"
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 数组中的每一行执行此操作
在不知道 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}
或
>>> 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}
elements = dict( zip( * [ iter( myarray ) ] * 2 ) )
我们在这里看到的是,我们基于 myarray 列表创建了一个迭代器。我们把它放在一个列表中,然后加倍。现在,我们已经将相同的迭代器绑定到列表中的第一个和第二个位置,我们将其作为参数提供给zip函数,该函数为字典创建者创建对列表。