Python 提高numpy中levenshtein距离的性能

Python 提高numpy中levenshtein距离的性能,python,numpy,vectorization,Python,Numpy,Vectorization,我有以下功能: 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

我有以下功能:

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循环,用一些矢量化来代替它们,但我找不到一个好方法,有什么想法吗?

对我来说,最好用它来解决你的问题,而不是重新发明轮子。你会节省很多时间

打开
cmd
并编写
pip-install-python-Levenshtein
,或者如果使用git,则转到项目文件夹并键入
git-clonehttps://github.com/ztane/python-Levenshtein.git
()。然后打开一个python文件并:

import Levenshtein
Levenshtein.distance('Levenshtein', 'Lenvinsten')
# output will be 4
# ... your code ...

但是,如果需要手动编写,您可以查看其他开发人员或在同一链接中是如何编写的。

@BrunoMello没问题,只需浏览github\pypi:)