main PyPI version

nanoflann wrappers for python and maybe fortran.


As nanoflann offers template classes, separate classes are implemented in napf for each *{datatype, distance metric}*. All the search functions are equipped with multi-thread execution. Uses numpy.ndarray for data input and output. Currently, the combinations of following options are supported:

  • data type: {double, float, int, long} (corresponds to {np.float64, np.float32, np.int32, np.int64})

  • distance metric: {L1, L2} Note that functions return squared distances, when you use the L2 metric.

quick start#

install with pip:

pip install --upgrade pip
pip install napf

Note: in case your system requires a dynamic build, you need a c++11 compatible c++ compiler. To make sure a correct compiler is chosen, set ``export CC=<your-c-compiler> CXX=<your-c++-compiler>``

import napf
import numpy as np

data = <data in 2D array>
queries = <query points in 2D array>

kdt = napf.KDT(tree_data=data, metric=1)

distances, indices = kdt.knn_search(


If you need fortran bindings, please let us know by creating an issue.


This package uses a sphinx based documentation. An online version of the documentation can be found at napf - documentation.

If you want to build the documentation yourself use the following commands in the package root directory.

pip install -r ./docs/requirements.txt
sphinx-build -W -b html docs/source docs/build

You will find the documentation in the docs/build folder.

Table of Contents#