¿Por qué las siguientes líneas no funcionan como esperaba?¿Por qué no funciona una asignación para matrices numpy de dos cortes?
import numpy as np
a = np.array([0,1,2,1,1])
a[a==1][1:] = 3
print a
>>> [0 1 2 1 1]
# I would expect [0 1 2 3 3]
¿Es esto un 'error' o hay alguna otra manera recomendada de hacerlo?
Por otro lado, las siguientes obras:
a[a==1] = 3
print a
>>> [0 3 2 3 3]
Cheers, Philipp
Agregué un segundo ejemplo que funciona como espero. Realmente no veo la diferencia. ¿No debería la tarea ser "transmitida"? –
No creo que esto sea del todo correcto. Si haces 'a [a == 1] = 3', eso realmente cambia el contenido de a. –
@Dave - Creo que esto es perimosocodiae es correcto, y que su contraejemplo se debe a algo más parecido a un truco en las partes internas numpy para crear la apariencia de una operación en el lugar. – tom10