У меня есть следующая функция:
def levenshtein(seq1, seq2):
size_x = len(seq1) + 1
size_y = len(seq2) + 1
matrix = np.zeros ((size_x, size_y))
matrix[: , 0] = np.arange(size_x)
matrix[0, :] = np.arange(size_y)
for x in range(1, size_x):
for y in range(1, size_y):
if seq1[x-1] == seq2[y-1]:
matrix [x,y] = min(
matrix[x-1, y] + 1,
matrix[x-1, y-1],
matrix[x, y-1] + 1
)
else:
matrix [x,y] = min(
matrix[x-1,y] + 1,
matrix[x-1,y-1] + 1,
matrix[x,y-1] + 1
)
return (matrix[size_x - 1, size_y - 1])
И я хочу применить ее ко многим парам строк, чтобы сделать это как можно быстрее, я хочу удалить из нее циклы for и заменить их какой-то векторизацией, но я не мог найти хороший способ сделать это, есть идеи?