У меня есть большие 2D-массивы с несортированными (X, Y) точками, для которых мне нужно знать, какие точки находятся в непосредственной близости друг от друга (поиск ближайшего соседа). Я использовал cKDTree и query_ball_tree с успехом для массивов с около 500 000 (X, Y) точек. Однако, когда я пробую тот же алгоритм для наборов данных более 1 000 000 точек, query_ball_tree приводит к ошибке MemoryError.
Я использую 64-битную Windows с 16 ГБ встроенной памяти и пробовал как 32-битные, так и 64-битные версии Python и модули расширения (scipy и numpy).
def Construct_SearchTree(AllXyPoints):
KDsearch = cKDTree(AllXyPoints)
return KDsearch.query_ball_tree(KDsearch, Maxdist)
Мои вопросы:
1) кто-нибудь знает альтернативу cKDTree/query_ball_tree, потребляющую меньше памяти? В этом случае скорость менее важна, чем использование памяти.
2) Я надеялся, что переход с 32-битного на 64-битный Python и расширения решит ошибку MemoryError. Что может быть причиной того, что это не так?
Спасибо за помощь и советы.