Учитывая два массива hashes
и table
, для каждого значения в hashes
Я хочу сохранить позицию элемента со смещением значения элемента в массиве table
. Вот наивный алгоритм:
def insert_n(table,hashes):
for x in xrange(len(hashes)):
table[hashes[x]]=x
Это очень медленно. Псико помогает здесь некоторым, но вряд ли.
У Numpy есть решение:
numpy.insert(table,numpy.arange(len(hashes)),hashes)
Но, согласно моим оценкам, это все равно очень медленно для такой простой операции. Есть ли более быстрый способ выполнить это, который можно использовать из python?
Некоторые дополнительные примеры кода:
import numpy
from time import time
table_size=2**20
hashes_size=2**19
table=numpy.zeros(table_size,dtype=numpy.uint32)
hashes=numpy.fromstring(numpy.random.bytes((hashes_size)*4),
dtype=numpy.uint32)%table_size
t0=time()
numpy.insert(table,numpy.arange(len(hashes)),hashes)
print time()-t0