python - tablas - pandas dataframe
Numeración de asignación de matriz con copia (3)
Por ejemplo, si tenemos una matriz numpy A , y queremos una matriz numpy B con los mismos elementos.
¿Cuál es la diferencia entre estos métodos? ¿Cuándo se asigna memoria adicional y cuándo no?
-
B = A -
B[:] = A(igual queB[:]=A[:]?) -
numpy.copy(B, A)
-
B=Acrea una referencia -
B[:]=Ahace una copia -
numpy.copy(B,A)hace una copia
los dos últimos necesitan memoria adicional.
Para hacer una copia profunda necesita usar B = copy.deepcopy(A)
Esta es la única respuesta que funciona para mí:
B=numpy.array(A)
Las tres versiones hacen cosas diferentes.
Esto une un nuevo nombre
Bal objeto existente que ya se llamaALuego se refieren al mismo objeto, por lo que si modifica uno en su lugar, verá el cambio a través del otro también.Esto copia los valores de
Aen una matriz existenteBLas dos matrices deben tener la misma forma para que esto funcione.B[:] = A[:]hace lo mismo (peroB = A[:]haría algo más como 1).Esto no es sintaxis legal. Probablemente quiso decir
B = numpy.copy(A). Esto es casi lo mismo que 2, pero crea una nueva matriz, en lugar de reutilizar la matrizBSi no hubiera otras referencias al valorBanterior, el resultado final sería el mismo que 2, pero utilizará más memoria temporalmente durante la copia.Editar: ¿o quizás te
numpy.copyto(B, A), que es legal y equivale a 2?