Проблема с типом данных с использованием scipy.spatial

Я хочу использовать KDTree scipy.spatial для поиска ближайших соседних пар в двумерном массиве (по существу, список списков, где размерность вложенного списка равна 2). Я создаю список списков, подключаю его к массиву numpy и создаю экземпляр KDTree. Однако всякий раз, когда я пытаюсь запустить «запрос», я неизбежно получаю странные ответы. Например, когда я печатаю:

tree = KDTree(array) nearest = tree.query(np.array[1,1]) 

ближайшие распечатки (0.0, 0). В настоящее время я использую массив, который в основном равен y = x для диапазона (1,50), поэтому я ожидаю, что я должен получить ближайшего соседа (2,2) для (1,1)

Что я делаю неправильно, скупые гуру?

EDIT: В качестве альтернативы, если кто-то может указать мне на пакет KDTree для python, который они использовали для поиска ближайшего соседа в данной точке, мне бы хотелось услышать об этом.

  • Т-тест в Pandas (Python)
  • Проблема с 2D-интерполяцией в SciPy, непрямоугольная сетка
  • Переносные векторы смещения среди множества точек
  • чтение csv-файлов в scipy / numpy в Python
  • Вычисление спектра мощности в python
  • Эффективное вычисление дисперсии изображения python
  • заполнение пробелов на изображении с помощью numpy и scipy
  • Почему мой соперник в Симпи не согласен с Rician in Scipy?
  • One Solution collect form web for “Проблема с типом данных с использованием scipy.spatial”

    Раньше я использовал scipy.spatial , и это кажется хорошим улучшением (особенно по интерфейсу) по сравнению с scikits.ann .

    В этом случае, я думаю, вы tree.query(...) возвращение с вашего tree.query(...) . Из документов scipy.spatial.KDTree.query :

     Returns ------- d : array of floats The distances to the nearest neighbors. If x has shape tuple+(self.m,), then d has shape tuple if k is one, or tuple+(k,) if k is larger than one. Missing neighbors are indicated with infinite distances. If k is None, then d is an object array of shape tuple, containing lists of distances. In either case the hits are sorted by distance (nearest first). i : array of integers The locations of the neighbors in self.data. i is the same shape as d. 

    Поэтому в этом случае, когда вы запрашиваете ближайшую к [1,1] вы получаете:

     distance to nearest: 0.0 index of nearest in original array: 0 

    Это означает, что [1,1] является первой строкой ваших исходных данных в array , которая ожидается, если ваши данные y = x on the range [1,50] .

    Функция scipy.spatial.KDTree.query имеет множество других параметров, поэтому, если вы, например, захотели получить ближайшего соседа, который сам не пытается:

     tree.query([1,1], k=2) 

    Это вернет двух ближайших соседей, к которым вы можете применить дальнейшую логику к таким случаям, когда возвращаемое расстояние равно нулю (т. Е. Запрашиваемая точка – это один из элементов данных, используемых для построения дерева), а второй ближайший сосед берется, а не первый ,

    Interesting Posts

    Каков самый простой способ обменивать символ в строке с помощью Python?

    удаленное выполнение сценария оболочки с помощью python

    Смутно о запуске Scrapy из скрипта Python

    Получите первые N пар ключей из упорядоченного словаря к другому

    Python – Как проверить, используется ли файл другим приложением?

    Python / Django импортирует неправильный модуль (относительный, когда он должен быть абсолютным)

    HTML-теги для choicefield в Django

    Выполнение функций формы Javascript с использованием scrapy в python

    Вернуть кортеж аргументов, которые нужно передать в string.format ()

    Скопировать последние три строки текстового файла в python?

    Как получить доступ к именам пользователей и профилям с помощью django-allauth

    Панды: переформатирование данных

    Правильная схема данных NoSQL для веб-галереи фотографий

    WebDriverException: Сообщение: «Браузер, кажется, вышел, прежде чем мы могли подключиться. Выход: Ошибка: не указано отображение

    Запутать Список в Python: что это такое?

    Python - лучший язык программирования в мире.