pykdtree
raw JSON → 1.4.3 verified Mon Apr 27 auth: no python
A fast kd-tree implementation in Cython with OpenMP-enabled parallel queries. Current version 1.4.3, supports Python >=3.9 and NumPy >=1.25. Release cadence is irregular, with several maintenance releases addressing bugs and build compatibility.
pip install pykdtree Common errors
error ModuleNotFoundError: No module named 'pykdtree.kdtree' ↓
cause Import path changed; users try from pykdtree import KDTree.
fix
Use: from pykdtree.kdtree import KDTree
error pykdtree.kdtree.KDTree not returning correct results for large arrays ↓
cause Integer overflow in tree indexing before version 1.4.0.
fix
Upgrade to pykdtree >= 1.4.0.
error Segmentation fault (core dumped) when querying empty array ↓
cause Bug in versions < 1.3.13 when input data has zero rows.
fix
Upgrade to pykdtree >= 1.3.13.
Warnings
gotcha Input data must be a 2D NumPy array with dtype float64 or float32. If using float32, queries disable OpenMP parallelization. ↓
fix Ensure data is np.float64 or np.float32, and for large data prefer float64 to benefit from OpenMP.
breaking Version 1.4.0 changed internal integer sizes to handle large arrays. Trees built with older versions cannot be pickled and loaded in 1.4.0+. ↓
fix Rebuild trees after upgrading pykdtree.
deprecated Importing KDTree directly from pykdtree (e.g., from pykdtree import KDTree) is no longer supported as of 1.4.0. ↓
fix Use from pykdtree.kdtree import KDTree instead.
Install
pip install pykdtree --no-binary pykdtree Imports
- KDTree
from pykdtree.kdtree import KDTree
Quickstart
import numpy as np
from pykdtree.kdtree import KDTree
data = np.random.randn(100, 3)
tree = KDTree(data)
query = np.random.randn(5, 3)
dists, idx = tree.query(query, k=4)
print(dists, idx)