python计算汉明距离_有效地使用python计算汉明距离
python中的
distance軟件包提供漢明距離計算器:
import distance
distance.levenshtein("lenvestein", "levenshtein")
distance.hamming("hamming", "hamning")
還有一個levenshtein包提供了levenshtein距離計算.最后difflib可以提供一些簡單的字符串比較.
在this old question上有所有這些的更多信息和示例代碼.
您現有的代碼很慢,因為您在最內部循環中重新計算文件哈希值,這意味著每個文件都會多次進行哈希處理.如果先計算哈希值,那么該過程將更有效:
files = ...
files_and_hashes = [(f, pHash.imagehash(f)) for f in files]
file_comparisons = [
(hamming(first[0], second[0]), first, second)
for second in files
for first in files
if first[1] != second[1]
]
這個過程從根本上涉及O(N ^ 2)比較,因此以適合地圖減少問題的方式分配這個過程涉及獲取完整的字符串集并將它們分成B塊,其中B ^ 2 = M(B =字符串塊的數量,M =工人數量).因此,如果您有16個字符串和4個工作符,則可以將字符串列表拆分為兩個塊(因此塊大小為8).劃分工作的一個例子如下:
all_strings = [...]
first_8 = all_strings[:8]
last_8 = all_strings[8:]
compare_all(machine_1, first_8, first_8)
compare_all(machine_2, first_8, last_8)
compare_all(machine_3, last_8, first_8)
compare_all(machine_4, last_8, last_8)
總結
以上是生活随笔為你收集整理的python计算汉明距离_有效地使用python计算汉明距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绝对布局优势_前瞻布局+尖端科技+雄厚资
- 下一篇: a8处理器相当于骁龙几_天玑700处理器