我正在尝试从一个相对较大的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数组中的每一行
执行此操作答案 0 :(得分: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}
答案 1 :(得分:0)
elements = dict( zip( * [ iter( myarray ) ] * 2 ) )
我们在这里看到的是我们基于myarray列表创建了一个迭代器。我们把它放在一个列表中并加倍。现在我们有一个相同的迭代器绑定到列表中的第一个和第二个位置,我们将它作为zip函数的参数提供,它为dict创建者创建一对对列表。