使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会首先显示这种行为?
__hash__
)。 - hpaulj