Сравнение 2 списка кортежей - PullRequest
0 голосов
/ 02 октября 2019

У меня есть список:

 a = [(1, 2), (3, 4), (4, 5), (6, 7)]
 # Stores list of x,y coordinates

и список:

 b = [(1, 2), (10, 1), (3, 10), (4, 9)]

Теперь я хочу заменить на a, где у него есть координата y в a>= of, b с координатой y + 2.

Поскольку здесь a имеет эквивалент или больше b в:

[(1,2), (3,4)]

Я хочу заменить в a такой, что он становится:

a = [(1,4), (3,6), (4,5), (6,7)]

Как я могу это сделать?

Я знаю, что существует метод с numpy такой, что:

np.where(a >= b) , do something;

, но не уверенкак я мог использовать это в этом случае.

Ответы [ 2 ]

2 голосов
/ 02 октября 2019

IIUC, сравните их axis=1 и +=2

a = np.asarray(a)
b = np.asarray(b)

a[a[:, 1] > b[:, 1], 1] += 2

array([[1, 2],
       [3, 6],
       [4, 5],
       [6, 7]])
0 голосов
/ 02 октября 2019

Нет, NumPy:

a = [(1, 2), (3, 4), (4, 5), (6, 7)]
b = [(1, 2), (10, 1), (3, 10), (4, 9)]
c = [(aa[0], aa[1]+2) if aa[1] >= bb[1] else aa for aa, bb in zip(a, b)]

c является [(1, 4), (3, 6), (4, 5), (6, 7)]

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