una tablas para leer inner funciones datos columna añadir agregar python arrays numpy

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?

  1. B = A
  2. B[:] = A (igual que B[:]=A[:] ?)
  3. numpy.copy(B, A)

  1. B=A crea una referencia
  2. B[:]=A hace una copia
  3. 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.

  1. Esto une un nuevo nombre B al objeto existente que ya se llama A Luego se refieren al mismo objeto, por lo que si modifica uno en su lugar, verá el cambio a través del otro también.

  2. Esto copia los valores de A en una matriz existente B Las dos matrices deben tener la misma forma para que esto funcione. B[:] = A[:] hace lo mismo (pero B = A[:] haría algo más como 1).

  3. 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 matriz B Si no hubiera otras referencias al valor B anterior, 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?