Tengo una matriz:
a = [[(1,2), (3,4)], [(4,5),(3,4)]]
# Stores list of x,y coordinates
Y una matriz:
b = [(1,2), (3,4)]
Ahora, quiero reemplazar en a
donde tiene un equivalente de b
con la coordenada y + 2.
Como aquí a
tiene un equivalente de b
en:
[(1,2), (3,4)]
Quiero reemplazar en a
de modo que se convierta en:
a = [[(1,4), (3,6)], [(4,5),(3,4)]]
¿Cómo podría hacer esto?
Sé que existe un método con numpy tal que:
np.where(a == b) , do something;
Pero no estoy segura de cómo podría usarlo en este caso.
3 respuestas
Con numpy
a[(a==b).all(1).all(1),:,1] +=2
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)
salida:
[[(1, 4), (3, 6)], [(4, 5), (3, 4)]]
No estoy seguro acerca de una buena solución en numpy
para esto, pero puede ir con la comprensión de la lista en su lugar:
>>> 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)]]
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.