scipy kdtree с метаданными

В настоящее время я ищу способ построить пару деревьев kd для быстрого запроса некоторых n-мерных данных. Однако у меня возникли проблемы с алгоритмом дерева scipy KD.

Мои данные состоят из id -> {data: somedata, coordinate: x, y}

Я хочу иметь возможность запрашивать базу по идентификаторам координат и k-ближайшего соседа, а также получать идентификатор соседа радиуса исправления. Судя по scipy-реализации KDTree и cKDtree, это недоступно.

Мои другие варианты - написать собственное дерево KD, которое не будет таким уж хорошим, потому что я просто я, или ...?


person Pwnna    schedule 13.01.2013    source источник


Ответы (1)


Если поиграть с KDTree, это выглядит как будто он настаивает на том, чтобы его конструктору был передан 2D-массив numpy, подобный объекту, но API возвращает индексы в этот массив. Кроме того, вы не можете просто привязать свои данные к отдельным координатам.

Но вы все равно можете воспользоваться преимуществами KDTree. Вам нужно разделить свой объект на параллельный список присоединенных объектов данных и массив координат, которые видит KDTree. Когда он говорит, что возвращает 3-ю точку для некоторого поиска, вы знаете, что это соответствует 3-му индексу в вашем прикрепленном списке объектов данных.

Конечно, это более неудобно, чем API, который дал бы вам ключевую функцию, которая дает координаты из произвольного объекта, подобно тому, как вы можете передать ключ функции сортировки Python, но это намного лучше, чем развертывание вашей собственной реализации KDTree.

person Rob Neuhaus    schedule 13.01.2013
comment
Потрясающий! Кажется, я немного неправильно понял документацию. Все хорошо сейчас - person Pwnna; 13.01.2013