vptree icon indicating copy to clipboard operation
vptree copied to clipboard

Python implemenation of a vantage-point tree data structure for nearest neighbor searching.

VP-Tree

.. image:: https://badge.fury.io/py/vptree.svg :target: https://badge.fury.io/py/vptree

.. image:: https://github.com/RickardSjogren/vptree/actions/workflows/python-package.yml/badge.svg?branch=master :target: https://github.com/RickardSjogren/vptree/actions/workflows/python-package.yml

This package contains an implementation of a vantage-point tree <https://en.wikipedia.org/wiki/Vantage-point_tree>_ data structure.

Installation

Simply install through pip:

.. code-block::

pip install vptree

Example

Example usage:

.. code-block:: python

import numpy as np import vptree

Define distance function.

def euclidean(p1, p2): return np.sqrt(np.sum(np.power(p2 - p1, 2)))

Generate some random points.

points = np.random.randn(20000, 10) query = [.5] * 10

Build tree in O(n log n) time complexity.

tree = vptree.VPTree(points, euclidean)

Query single point.

tree.get_nearest_neighbor(query)

Query n-points.

tree.get_n_nearest_neighbors(query, 10)

Get all points within certain distance.

tree.get_all_in_range(query, 3.14)