我需要能够存储numpy array一个dict用于缓存的目的.哈希速度很重要.
该array代表indicies,所以在对象的真实身份并不重要,值.可变性不是一个问题,因为我只对当前价值感兴趣.
我应该散列什么才能将其存储在一个dict?
我目前的方法是使用str(arr.data),这比md5我的测试更快.
我已经从答案中加入了一些例子来了解相对时间:
In [121]: %timeit hash(str(y))
10000 loops, best of 3: 68.7 us per loop
In [122]: %timeit hash(y.tostring())
1000000 loops, best of 3: 383 ns per loop
In [123]: %timeit hash(str(y.data))
1000000 loops, best of 3: 543 ns per loop
In [124]: %timeit y.flags.writeable = False ; hash(y.data)
1000000 loops, best of 3: 1.15 us per loop
In [125]: %timeit hash((b*y).sum())
100000 loops, …Run Code Online (Sandbox Code Playgroud) 我想计算包含Machine Learning数据集的Python类的哈希值.哈希意味着用于缓存,所以我想到md5或sha1.问题是大多数数据都存储在NumPy数组中; 这些不提供__hash__()会员.目前我pickle.dumps()为每个成员做一个并根据这些字符串计算哈希.但是,我发现以下链接指示同一对象可能导致不同的序列化字符串:
为包含Numpy数组的Python类计算哈希的最佳方法是什么?
我正在进行一些计算密集的计算,处理numpy矩阵和ndarray,并且从一些挖掘中,有大约十二种不实现memoization的方法,通常充满了冲突,ndarrays是可变对象的问题.
有没有人遇到过一个可以处理numpy对象的相当普遍的memoisation装饰器?