unhashable type: 'numpy.ndarray'
时间: 2023-08-31 21:07:16 浏览: 227
Python 数据分析三剑客之 NumPy(三):万字文章详解 NumPy 数组的迭代与位运算
这个错误提示表明你试图将一个不可哈希的类型 `numpy.ndarray` 用作字典的键,而字典中的键必须是可哈希的。
可哈希(hashable)意味着一个对象具有不可变的哈希值。字典使用键的哈希值来进行快速查找和比较。因此,只有那些不可变的对象才能用作字典的键,如整数、浮点数、字符串、元组等。
而 `numpy.ndarray` 是一个N维数组对象,它是可变的(mutable),因此是不可哈希的。因此,你无法将 `numpy.ndarray` 实例直接用作字典的键。
如果你想以某种方式关联 `numpy.ndarray` 对象和其他值,可以考虑使用其他可哈希的对象作为键,例如将 `numpy.ndarray` 转换为元组,并将其作为键来使用。
例如:
```python
import numpy as np
my_dict = {}
arr = np.array([1, 2, 3])
key = tuple(arr.tolist()) # 将ndarray转换为列表再转换为元组
value = 'some value'
my_dict[key] = value
```
在这个示例中,我们将 `numpy.ndarray` 对象 `arr` 转换为列表,并将其转换为元组 `key`,然后将其作为字典的键来使用。然后我们可以将对应的值 `'some value'` 存储在字典中。
请注意,转换为元组后,`numpy.ndarray` 的内容将成为元组的一部分,因此需要确保该内容的唯一性,以避免产生相同的键。
阅读全文