Ближайшие соседи Поиск: Python

У меня 2-мерный массив:

MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0], [6588253.79, 1933602.89, 212.66, 0, 0], etc...) 

Первые два элемента MyArray[0] и MyArray[1] – это координаты X и Y точек.

Для каждого элемента массива я хотел бы найти самый быстрый способ вернуть своего ближайшего соседа в радиус X единиц. Мы предполагаем, что это в 2D пространстве.

скажем, для этого примера X = 6 .

Я решил проблему, сравнивая каждый элемент с каждым другим элементом, но это занимает 15 минут или около того, когда ваш список имеет длину 22k. Мы надеемся, что в конечном итоге это будет на списках около 30 миллионов баллов.

Я читал о деревьях Kd и понимаю основную концепцию, но у меня возникли проблемы с пониманием их сценария.

  • Использование regex для удаления комментариев из исходных файлов
  • Парамико: как обеспечить получение данных между командами
  • Можно ли переслать-объявить функцию в Python?
  • Функция Python замедляется с наличием большого списка
  • Найти индексы строк нескольких значений в массиве numpy
  • Массив Javascript со значениями по умолчанию (эквивалент Python defaultdict)?
  • как обновить глобальную переменную в python
  • Список Python для массива PostgreSQL
  • One Solution collect form web for “Ближайшие соседи Поиск: Python”

    Спасибо Джону Винярду за предложение scipy. После некоторых хороших исследований и испытаний, вот решение этого вопроса:

    Предпосылки: установите Numpy и SciPy

    1. Импортируйте модули SciPy и Numpy

    2. Сделайте копию 5-мерного массива, включая только значения X и Y.

    3. Создайте экземпляр cKDTree как таковой:

       YourTreeName = scipy.spatial.cKDTree(YourArray, leafsize=100) #Play with the leafsize to get the fastest result for your dataset 
    4. cKDTree для ближайшего соседа в пределах 6 единиц:

       for item in YourArray: TheResult = YourTreeName.query(item, k=1, distance_upper_bound=6) 

      для каждого элемента в YourArray , TheResult будет кортежем расстояния между двумя точками и индексом местоположения точки в YourArray .

    Надеюсь, это поможет любому, кто испытал замешательство с KD Trees!

    Interesting Posts

    Python – Python 3.1 не может обрабатывать кодированные файлы UTF-16?

    Pandas: Использование временной метки Unix в качестве индекса Datetime

    Сравнение поворотных списков в python

    Каков путь для TEMPLATE_DIRS в настройках django.py при использовании virtualenv

    Получить результат ipconfig с помощью python в окнах

    Команда Storm не работает с NoClassDefFoundError после добавления jsoup в соответствии с указанной зависимостью

    Несколько входов и выходов в подпроцессе python

    Django не может правильно уничтожить и создать тестовые базы данных

    Неожиданное поведение списка в Python

    Включение файлов, отличных от Python, с помощью setup.py

    Почему аргументы за пределами аргумента не могут следовать аргументу по умолчанию?

    передать сеансовые куки в http-заголовок с python urllib2?

    Доступ к тексту, скопированному в буфер обмена с помощью python

    Как проверить макет звонков с помощью подстановочных знаков?

    Как сохранить ориентацию строк и столбцов векторов в numpy?

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