Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/07/2013, 16:46
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Duda arreglos Numpy a+= a.T

Cita:
A slicing operation creates a view on the original array, which is just a way of accessing array data. Thus the original array is not copied in memory.

When modifying the view, the original array is modified as well:
This behavior can be surprising at first sight... but it allows to save both memory and time.

As a result, a matrix cannot be made symmetric in-place.
En C en concepto de x += 1; es igual a x = x + 1; pero en otros lenguajes no es cierto por ejemplo python o C++. Por la simple razón que existen sobrecarga de operadores.

Siguiendo con el problema:
Según lo que te dicen que a.T es una vista de a y no una copia. Y si a esto le añades que += hace la suma in-place (osea sobre el arreglo original a) entonces obviamente vas a tener problemas.

Con valores pequeños no tendrás problemas (matrices de 3x3 incluso de 20x20) pero con matrices grandes si tendrás problemas.