为什么在Python中,字符串的MD5哈希比numpy数组快得多?
在python/numpy中,我有一个10,000x10,000的数组,叫做random_matrix
。我用md5算法来计算str(random_matrix)
的哈希值和random_matrix
本身的哈希值。计算字符串版本的哈希值花了0.0075秒,而计算numpy数组版本的哈希值则花了1.6969秒。当我把数组变成20,000x20,000时,字符串版本的哈希计算需要0.0778秒,而numpy数组版本的哈希计算则需要60.6411秒。为什么会这样呢?numpy数组是不是占用了比字符串更多的内存?另外,如果我想用这些矩阵来命名文件,先把它转换成字符串再计算哈希值是个好主意吗?这样做有没有什么缺点呢?
1 个回答
7
str(random_matrix)
这个命令不会显示整个矩阵,因为numpy会用“...”来省略一些内容:
>>> x = np.ones((1000, 1000))
>>> print str(x)
[[ 1. 1. 1. ..., 1. 1. 1.]
[ 1. 1. 1. ..., 1. 1. 1.]
[ 1. 1. 1. ..., 1. 1. 1.]
...,
[ 1. 1. 1. ..., 1. 1. 1.]
[ 1. 1. 1. ..., 1. 1. 1.]
[ 1. 1. 1. ..., 1. 1. 1.]]
所以当你对 str(random_matrix)
进行哈希处理时,其实并没有对所有的数据进行哈希。