【发布时间】:2018-04-08 06:52:43
【问题描述】:
使 numpy 数组可散列的一种方法是将其设置为只读。这在过去对我有用。但是当我在一个元组中使用这样一个 numpy 数组时,整个元组不再是可散列的,我不明白。这是我为说明问题而整理的示例代码:
import numpy as np
npArray = np.ones((1,1))
npArray.flags.writeable = False
print(npArray.flags.writeable)
keySet = (0, npArray)
print(keySet[1].flags.writeable)
myDict = {keySet : 1}
首先我创建一个简单的 numpy 数组并将其设置为只读。然后我将它添加到一个元组并检查它是否仍然是只读的(它是)。
当我想将元组用作字典中的键时,我收到错误 TypeError: unhashable type: 'numpy.ndarray'。
这是我的示例代码的输出:
False
False
Traceback (most recent call last):
File "test.py", line 10, in <module>
myDict = {keySet : 1}
TypeError: unhashable type: 'numpy.ndarray'
我可以做些什么来使我的元组可散列?为什么 Python 首先会显示这种行为?
【问题讨论】:
-
您从哪里得到将
writeable标志设置为False会使数组可散列的想法?即使在您将元组带入图片之前,这也行不通。 -
一个 numpy 数组没有所需的散列方法(类似于
__hash__)。
标签: python-3.x numpy tuples hashable