我对Python numpy很新。我试图在我的一个函数中使用numpy数组作为字典中的键,然后被Python解释器告知numpy数组不可清除。我刚刚发现,解决这个问题的一种方法是使用repr()
函数将numpy数组转换为字符串,但它似乎非常昂贵。有没有更好的方法来达到同样的效果?
更新:我可以创建一个新类来包含numpy数组,这似乎是实现我想要的正确方法。只是想知道是否有更好的方法?
更新2:使用类来包含数组中的数据,然后覆盖__hash__
函数是可以接受的,但是,我更喜欢@hpaulj提供的解决方案。将array/list
转换为tuple
以更好的方式满足我的需要,因为它不需要额外的类。
如果你想快速存储numpy.ndarray
作为字典中的键,一个快速选项是使用ndarray.tobytes(),它将返回一个原始的python bytes
字符串,它是不可变的
my_array = numpy.arange(4).reshape((2,2))
my_dict = {}
my_dict[my_array.tobytes()] = None