У меня есть около 1M двоичного массива numpy, который мне нужен, чтобы получить Хэмминг. Расстояние между ними, чтобы найти k-ближайших соседей, самый быстрый метод, который я получаю, использует cdist, возвращая матрицу с плавающей точкой с расстоянием.Оптимизация расстояния Хэмминга Python
Поскольку у меня нет памяти достаточно, чтобы получить флоат матрицу 1MX1M так, что я делаю это один элемент, в то время как это:
from scipy.spatial Import distance
Hamming_Distance = distance.cdist(array1,all_array,'hamming')
The probles является то, что это взято как 2-3s для каждый Hamming_Distance, до 1 м документа потребовалось целую вечность (и мне нужно использовать его для разных k).
Есть ли самый быстрый способ сделать это?
Я думаю о многопроцессорности или сделать это на C, но у меня есть некоторые проблемы, которые понимают, как это работает многопроцессорство на python, и я не знаю, как смешивать код C с кодом Python.
Вы пытаетесь переборщить проблему, которой у вас нет нигде рядом с ресурсами для перебора. Есть гораздо лучшие способы найти ближайших соседей, чем вычислять все попарные расстояния и брать низкие. – user2357112