Мы пытаемся создать группу координат, которые находятся в непосредственной близости друг от друга. Для создания этой группы нам нужно сравнить координаты x, y массива numpy с первым элементом в массиве.
Если они совпадают, мы сохраняем это в одном в существующем массиве, а если нет, мы создаем новый и сохраняем их там.
Мы попробовали это с циклом for и извлекли x и yотдельно. Но это не сработало.
mport numpy as np
coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
(167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
(979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
(979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
(200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
(1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
(994.0796,1591.2533),(539.5005,1862.1327)]
seen = set()
newlist = []
for item in coordinates:
t = tuple(item)
if t not in seen:
newlist.append(item)
seen.add(t)
npArray = np.array(newlist)
newlist = npArray.astype(int)
npArray2 = np.array(newlist)
coordinates1 = npArray2.astype(int)
for i in coordinates1[0]:
print(i[0])
Мы пытаемся получить 1-й элемент координат в сообщении выше в отдельной переменной.
В настоящее время мы получаем ошибку: IndexError: недопустимый индекс для скалярной переменной.
Мы новички в python, поэтому любые рекомендации будут полезны, даже если указатель на лучший способ сделать это.
Спасибо!
Спасибо за все ответы. Я думаю, что моя ошибка в том, что я не объяснил вопрос. Я попытаюсь здесь снова:
coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
(167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
(979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
(979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
(200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
(1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
(994.0796,1591.2533),(539.5005,1862.1327)]
Мы пытаемся создать группы координат, которые находятся в пределах / в пределах 30 точек + или - 1-го координата в приведенном выше списке.
Итак, для этого нам нужно будет сравнить все координаты (x, y) одну за другой с 1-й координатой, и если они находятся выше указанного диапазона, мы назначим их группе (например,G1) / массив с 1-й координатой в качестве 1-го элемента в этой группе.
Если не в диапазоне, мы создадим другую группу (например, G2) / массив и вставим координату вне диапазона в этой новой группе.
Таким образом, мы продолжаем сравнивать один за другим каждый элемент в вышеприведенном списке, пока все координаты не сравнятся и не будут отнесены к одной из групп.
Надеюсь, я прояснил это.
Большое спасибо за вашу помощь!
С наилучшими пожеланиями,