Différence entre scipy.spatial.KDTree et scipy.spatial.cKDTree
2 réponses
cKDTree est un sous-ensemble de KDTree, implémenté en C++ enveloppé dans Cython, donc plus rapide.
Chacun d'eux est
un tri binaire, dont chacun des noeuds représente un hyperrectangle aligné sur l'axe. Chaque nœud spécifie un axe et partage l'ensemble des points selon que leurs coordonner le long de cet axe est supérieure ou inférieure à une valeur particulière.
mais KDTree
aussi prend en charge les requêtes de tous les voisins, à la fois avec des tableaux de points et avec d'autres arbres de kd. Ceux-ci utilisent un algorithme raisonnablement efficace, mais l'arbre kd n'est pas nécessairement la meilleure structure de données pour ce genre de calcul.
dans un cas d'Utilisation (recherche 5D du voisin le plus proche dans un KDTree avec environ 100K points) cKDTree est environ 12x plus rapide que KDTree.