Ich muss eine große Anzahl von Zeichenfolgen ähnlich wie 50358c591cef4d76 vergleichen. Ich habe eine Hamming-Distanz-Funktion (mit pHash), die ich benutzen kann. Wie mache ich das effizient? Mein Pseudocode wäre:Mit Python effizient Hamming-Distanzen berechnen
For each string
currentstring= string
For each string other than currentstring
Calculate Hamming distance
Ich möchte die Ergebnisse als Matrix ausgeben und in der Lage sein, Werte abzurufen. Ich möchte es auch über Hadoop Streaming laufen lassen!
Alle Zeiger sind dankbar erhalten. Hier
ist, was ich versucht, aber es ist langsam:
import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()
setOfFiles = set(files)
print len(setOfFiles)
i=0
j=0
for fname in files:
print 'fname',fname, 'setOfFiles', len(setOfFiles)
oneLessSetOfFiles=setOfFiles
oneLessSetOfFiles.remove(fname)
i+=1
for compareFile in oneLessSetOfFiles:
j+=1
hash1 = pHash.imagehash(fname)
hash2 = pHash.imagehash(compareFile)
print ...
Wenn Sie jede Zeichenfolge mit jeder Zeichenfolge vergleichen möchten, haben Sie zwei verschachtelte Schleifen. Wollen Sie das tun? –