gpt4 book ai didi

python - 如何在 Python 中散列一个大对象(数据集)?

转载 作者:IT老高 更新时间:2023-10-28 22:21:42 25 4
gpt4 key购买 nike

我想计算一个包含机器学习数据集的 Python 类的哈希值。哈希是用来缓存的,所以我在考虑 md5sha1。问题是大部分数据都存储在 NumPy 数组中;这些不提供 __hash__() 成员。目前我为每个成员做一个 pickle.dumps() 并根据这些字符串计算一个哈希值。但是,我发现以下链接表明同一个对象可能导致不同的序列化字符串:

为包含 Numpy 数组的 Python 类计算哈希的最佳方法是什么?

最佳答案

感谢 John Montgomery,我想我找到了一个解决方案,而且我认为它比将可能 huge 数组中的每个数字转换为字符串的开销更少:

我可以创建数组的字节 View 并使用它们来更新哈希。不知何故,这似乎给出了与使用数组直接更新相同的摘要:

>>> import hashlib
>>> import numpy
>>> a = numpy.random.rand(10, 100)
>>> b = a.view(numpy.uint8)
>>> print a.dtype, b.dtype # a and b have a different data type
float64 uint8
>>> hashlib.sha1(a).hexdigest() # byte view sha1
'794de7b1316b38d989a9040e6e26b9256ca3b5eb'
>>> hashlib.sha1(b).hexdigest() # array sha1
'794de7b1316b38d989a9040e6e26b9256ca3b5eb'

关于python - 如何在 Python 中散列一个大对象(数据集)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com