Лучший способ сортировки / сравнения по нескольким документам? - PullRequest
1 голос
/ 22 сентября 2019

Я использую NumPy и работаю над Spyder.

Давайте предположим, что у нас есть какое-то «сканирование», которое предоставляет нам GPS-адреса домов в каком-то городе.

ЭтоПо окончании сканирования получается файл .txt, который содержит (x, y) -координаты, которые соответствуют GPS-местоположению указанных домов.

Допустим, мне дано около 40 наборов (x, y) координат в файле FIRST.

Теперь представьте, что мы снова запустили то же самое «сканирование», в результате чего появился второй файл.В идеальном мире оба файла содержали бы одинаковые координаты в абсолютно одинаковом порядке.

Но, (!) И это проблема, может случиться так, что иногда «сканирование» может ПРОПУСТИТЬ дом, такой, что file1 будет содержать 40 (x, y) пар координат, но file2 будет содержать 39 (x)у) пары.(см. ниже)

Обратите внимание, что при сканировании nr2 пропущен номер дома 3, и вместо этого номер дома 4 помечен как 3. Отныне два списка сканирования «не синхронизированы» на 1, чточто-то, что мне нужно для адресации.

Необработанный файл1:

1        Location: 28802.6    ,   128823.3
2        Location: 47405.0    ,   74931.0
3        Location: 49952.4    ,   117478.8
4        Location: 50901.7    ,   42166.5
...
40       Location: 143924.5   ,   143847.7
41       Location: 143821.0   ,   143845.4
42       Location: 141584.4   ,   143842.4

Необработанный файл2:

1        Location: 28802.6    ,   128823.3
2        Location: 47405.0    ,   74931.0
3        Location: 50901.7    ,   42166.5
...
39       Location: 143924.5   ,   143847.7
40       Location: 143821.0   ,   143845.4
41       Location: 141584.4   ,   143842.4

Требуемый результирующий массив1 / список1:

[28802.6, 128823.3],
[47405.0, 74931.0],
[49952.4, 117478.8],
[50901.7, 42166.5],
...
[143924.5,   143847.7,],
[143821.0,   143845.4],
[141584.4,   143842.4]

Требуемый результирующий массив2 / список2:

[28802.6, 128823.3],
[47405.0, 74931.0],
[0, 0],
[50901.7, 42166.5],
...
[143924.5,   143847.7,],
[143821.0,   143845.4],
[141584.4,   143842.4]

В конечном итоге я хотел бы получить координаты (x, y) каждого файла в 2d массивах или 2d списках, но таким образом, чтобы строки в обоих массивах соответствовалиЖе дома.

Так, что я знаю, что, если оба сканирования имеют отсканированный дом № 2 (что на данный момент имеет место), то строка № 2 в массиве 1 и строка 2 в массиве 2 содержат координаты (x, y), соответствующиетот же дом.

И в случае, если файл1 содержит координаты из дома 3, которые НЕ включены в файл2, это означает, что scan2, должно быть, пропустил этот дом, в идеале я бы хотел, чтобы мой код вводил координаты из сканирования 1 встрока 3 в массиве 1, но так как scan2 здесь не дает результатов, введите только нули в строке 2 массива 2, как показано выше.

И, наконец, с тех пор, как я надеюсь, теперь я четко изложил свою цель .... кикер:Что делать, если у меня более 2 сканов?Например, 3 или 5?И также имейте в виду, что file1 может быть MISS домом, который будет включен в file2.Все возможно.

Я не ищу полное решение, этот пост больше вопрос о том, как подойти к этой проблеме.Потому что, если я буду использовать для петель это будет получить запутанную очень быстро.Я как бы надеюсь на какую-то специальную команду python, которая могла бы помочь мне здесь.

Опять я использую numpy и работаю над spyder.

1 Ответ

1 голос
/ 22 сентября 2019

Я предлагаю вам хешировать координаты (x, y) для создания строки md5, идентифицирующей каждый дом.

import hashlib
coordinates = [28802.6, 128823.3]
m = hashlib.md5()
m.update(",".join([str(n) for n in coordinates]).encode('utf-8'))
m.hexdigest()

Теперь у каждого дома может быть «имя», и вам не нужно беспокоиться оПо индексам домов в массивах вы должны фактически хешировать координаты при чтении файла и сохранять эту информацию в массивах.Если вы хотите отслеживать, какие дома пропали без вести, в каком файле, вести список всех сгенерированных хэшей, и после того, как это будет сделано, проверить каждый массив, в котором отсутствуют хэши, тогда вы можете вставить их в массив с любым желаемым значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...