0

我正在尝试从一个相对较大的 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 数组中的每一行执行此操作

4

2 回答 2

2

在不知道 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}
于 2012-07-03T18:21:20.997 回答
0
elements = dict( zip( * [ iter( myarray ) ] * 2 ) )

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

于 2012-07-03T18:03:10.120 回答