Atribuição de matriz Numpy: diferenças de alocação de memória
No NumPy, existem três maneiras comuns de atribuir valores a uma matriz:
B = A
Quando você usa B = A, você não está criando uma nova matriz. Em vez disso, você está vinculando um novo nome (B) ao array existente (A). Como resultado, quaisquer modificações feitas em um array serão refletidas no outro.
B[:] = A
Esta sintaxe cria um novo array B com o mesmas dimensões e valores de A. A matriz original A não é modificada. Este método requer menos alocação de memória em comparação com numpy.copy.
numpy.copy(B, A)
Este método não é legal como você escreveu. Deve ser B = numpy.copy(A). numpy.copy cria um novo array B com as mesmas dimensões e valores de A. Este método requer mais alocação de memória em comparação com B[:] = A porque cria uma cópia física separada dos dados do array original.
Quando a memória adicional é alocada?
Memória adicional é alocada quando você usa numpy.copy para criar uma nova cópia física da matriz. Isso ocorre porque ele aloca um novo bloco contíguo de memória para os dados copiados.
Quando a memória não é alocada?
A memória não é alocada quando você usa B = A porque você está simplesmente renomeando o array original. A memória também não é alocada quando você usa B[:] = A porque reutiliza o mesmo local de memória que o array original.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3