2024-10-02 12:26:02 发布
网友
尝试这样做:
ls = np.empty ls =getColA() rs = np.empty rs=getColG() x = dict(itertools.izip(ls,rs))
得到这个错误:
如果有人能帮我,我会很感激的。在
当您使用itertools.izip(ls,rs)时,第一列将包含numpy数组,这些数组不能作为字典键使用。
itertools.izip(ls,rs)
您必须将它们转换为类似tuple的散列iterable。另外,如果您想沿着第二个轴连接两个numpy数组,那么最好使用np.column_stack(),而不是{}。
tuple
np.column_stack()
而且,还不清楚getColA对象是什么以及它返回什么。也许你可以修改这个可调用的对象,以获得更合适的结果。
getColA
有几件事是不合理的
ls = np.empty ls =getColA()
np.empty是一个函数。将其赋给ls;然后将getColA()的结果赋给ls。这就抹去了第一个任务。您认为第一个赋值是否将ls变量定义为数组?Python不是这样工作的。变量没有类型。
np.empty
ls
getColA()
您没有告诉我们getColA()返回什么,但错误表明它是一个数组。1d?二维?
这种字典构建可以使用1d数组(我使用的是PY3)
In [497]: dict(itertools.zip_longest(np.arange(3),np.arange(10,13))) Out[497]: {0: 10, 1: 11, 2: 12}
但不是2d
In [498]: dict(itertools.zip_longest(np.arange(6).reshape(2,3),np.ones((2,3)))) ... TypeError: unhashable type: 'numpy.ndarray'
这是因为2d上的zip返回数组的行,而这些行本身就是数组:
zip
In [499]: list(itertools.zip_longest(np.arange(6).reshape(2,3),np.ones((2,3)) ...: )) Out[499]: [(array([0, 1, 2]), array([ 1., 1., 1.])), (array([3, 4, 5]), array([ 1., 1., 1.]))]
为什么要使用数组作为字典键?
dict必须将密钥设置为散列类型。
dict
您正在尝试使用非哈希类型创建类型(努比·恩达雷).
这就是为什么你得到这个错误。
在您的情况下,您可以:
x = dict(itertools.izip(tuple(ls),rs))
当您使用
itertools.izip(ls,rs)
时,第一列将包含numpy数组,这些数组不能作为字典键使用。您必须将它们转换为类似}。
tuple
的散列iterable。另外,如果您想沿着第二个轴连接两个numpy数组,那么最好使用np.column_stack()
,而不是{而且,还不清楚
getColA
对象是什么以及它返回什么。也许你可以修改这个可调用的对象,以获得更合适的结果。有几件事是不合理的
^{pr2}$np.empty
是一个函数。将其赋给ls
;然后将getColA()
的结果赋给ls
。这就抹去了第一个任务。您认为第一个赋值是否将ls
变量定义为数组?Python不是这样工作的。变量没有类型。您没有告诉我们
getColA()
返回什么,但错误表明它是一个数组。1d?二维?这种字典构建可以使用1d数组(我使用的是PY3)
但不是2d
这是因为2d上的
zip
返回数组的行,而这些行本身就是数组:为什么要使用数组作为字典键?
dict
必须将密钥设置为散列类型。您正在尝试使用非哈希类型创建类型(努比·恩达雷).
这就是为什么你得到这个错误。
在您的情况下,您可以:
相关问题 更多 >
编程相关推荐