Благодаря Джону Монтгомери, я думаю, что нашел решение, и думаю, что оно требует меньше затрат, чем преобразование каждого числа в огромных массивах в строки:
Я могу создать байтовый вид массивов и использовать их для обновления хэша. И почему-то это дает тот же дайджест, что и прямое обновление с использованием массива:
>>> 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'