Как найти приблизительные координаты из четырех разных списков и координат

1

У меня есть четыре списка, представляющие координаты X и Y разных точек в списках A и B, поэтому X_A, Y_A, X_B, Y_B

A ] ['a', 'b', 'c', 'd', 'e', 'f']
X_A = [1.0, 2.2, 3.0, 4.0, 5.001, 6.0]
Y_A = [0.0, 2.0, 4.0, 6.1, 8.0, 0.0]
B = ['k', 'l', 'm', 'n', 'o', 'p']
X_B = [1.0, 3.0, 5.0005, 7.0, 9.1, 11.0]
Y_B = [0.0, 1.0, 8.0, 2.0, 8.0, 0.1]

Вышеприведенное значение читается как "a" имеет координаты (1.0, 0.0), а "l" имеет координаты (3.0, 1.0)

Я хотел бы добавить элементы из списка A в Node_A и элементы из B в Node_B, соответствующие координаты элементов списков A и B удовлетворяют пределу погрешности:

(X_A - X_B) <= error and (Y_A - Y_B) <= error

У меня есть код ниже, который, я считаю, должен выполнять эту работу, но, похоже, он не работает, и я не понимаю, почему любая помощь приветствуется!

Node_A, Node_B = [], []

error = 1e-2

i, j = 0, 0
for lo1,la1 in zip(X_A, Y_A):
    for lo2,la2 in zip(X_B, Y_B):
        if abs(lo1 - lo2) <= error and abs(la1 == la2) <= error:
            Node_A.append(A[i])
            Node_B.append(B[j])
            break
        j += 1
    i += 1
    j = 0

Желаемый результат должен быть ниже, так как они 'a' координаты из A равные 'k' координаты из координат B и 'e' удовлетворяют пределу погрешности и, следовательно, приблизительно равны координатам 'm':

Node_A: ['a', 'e']
Node_B: ['k', 'm']

Вместо этого я получаю Node_A: ['c'] и Node_B: ['l']

Теги:
list
python-3.x

2 ответа

0

Вы сделали опечатку во втором условии.

Это дает вам: e, k: m:

i, j = 0, 0
for lo1,la1 in zip(X_A, Y_A):
    for lo2,la2 in zip(X_B, Y_B):
        if abs(lo1 - lo2) <= error and abs(la1 - la2) <= error:
            Node_A.append(A[i])
            Node_B.append(B[j])
            break
        j += 1
    i += 1
    j = 0
0

+ Изменить

 if abs(lo1 - lo2) <= error and abs(la1 == la2) <= error:

в

 if abs(lo1 - lo2) <= error and abs(la1 - la2) <= error:

Результат:

['a', 'e']
['k', 'm']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню