У меня есть функция, которая принимает массив букв (называемый letters
) и создает перестановки элементов этого массива в соответствии с записями в списке walks
. Наконец, он проверяет, находятся ли какие-либо из этих перестановок в другом массиве (называемом words
). Вот минимальный пример
letters = 'resenntesayhresb'
letters = np.char.array(list(letters))
walks = [[0,1,5,6], [1,1,2,3], [1,2,3,4]]
words = np.array(['rent','house'])
def compute(walks, letters, words):
w = []
for i,walk in enumerate(walks):
w.append(''.join(letters[walk]))
return np.intersect1d(words, np.array(w))
compute(walks, letters, words)
Я хотел бы цифонизировать эту функцию, потому что я хотел бы применить ее к массиву walk
из 16 миллионов записей и массиву слов из полумиллиона записей.
Как я могу цифонизировать эту функцию? Я пробовал магию клетки c, но ускорения, похоже, нет.