Powtarzane obliczenia najbliższego sąsiada dla milionów punktów danych za wolno

Mam zestaw danych obejmujący miliony punktów danych w 3D. Aby wykonać obliczenia, muszę obliczyć sąsiada (wyszukiwanie zakresu) dla każdego punktu danych w promieniu, spróbować dopasować funkcję, obliczyć błąd dopasowania, powtórzyć to dla następnego punktu danych i tak dalej. Mój kod działa...