[英]Python - Alternative for using numpy array as key in dictionary
我是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
我只是遇到了这个问题,使用列表理解有一个非常简单的解决方案:
import numpy as np
dict = {'key1':1, 'key2':2}
my_array = np.array(['key1', 'key2'])
result = np.array( [dict[element] for element in my_array] )
print(result)
结果应为:
[1 2]
我不知道这有多有效,但似乎是一个非常实用且直接的解决方案,不需要任何转换或新的类:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.