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:)