Поиск дублирующего массива в 2d массиве и добавление номера в кортеж - PullRequest
1 голос
/ 02 октября 2019

У меня есть массив:

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

и массив:

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

Теперь я хочу заменить на a, где он имеет эквивалент b накоордината y + 2.

Так как здесь a имеет эквивалент b в:

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

Я хочу заменить в a таким, чтобы он стал:

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

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

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

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

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

Ответы [ 3 ]

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

С NUMPY

a[(a==b).all(1).all(1),:,1] +=2
1 голос
/ 02 октября 2019

Не уверен насчет хорошего решения в numpy для этого, но вместо этого вы можете воспользоваться списком:

>>> a
[[(1, 2), (3, 4)], [(4, 5), (3, 4)]]
>>> b
[(1, 2), (3, 4)]
>>> c=[[(el_inner[0], el_inner[1]+2) for el_inner in el] if el==b else el for el in a ]
>>> c
[[(1, 4), (3, 6)], [(4, 5), (3, 4)]]
0 голосов
/ 02 октября 2019

main ():

def main():
    a = [[(1, 2), (3, 4)], [(4, 5), (3, 4)]]
    b = [(1, 2), (3, 4)]

    for i, el in enumerate(a):
        if el == b:
            temp = []
            for x in el:
                c = (x[0], x[1]+2)
                temp.append(c)

            a[i] = temp
    print(a)

выход:

[[(1, 4), (3, 6)], [(4, 5), (3, 4)]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...