"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quand la mémoire supplémentaire est-elle allouée dans l’attribution du tableau NumPy ?

Quand la mémoire supplémentaire est-elle allouée dans l’attribution du tableau NumPy ?

Publié le 2024-11-03
Parcourir:186

When Is Additional Memory Allocated in NumPy Array Assignment?

Affectation d'un tableau Numpy : différences d'allocation de mémoire

Dans NumPy, il existe trois façons courantes d'attribuer des valeurs à un tableau :

  • B = A
  • B[:] = A
  • numpy.copy(B, A)

B = A

Lorsque vous utilisez B = A, vous ne créez pas de nouveau tableau. Au lieu de cela, vous liez un nouveau nom (B) au tableau existant (A). En conséquence, toutes les modifications apportées à un tableau seront reflétées dans l'autre.

B[:] = A

Cette syntaxe crée un nouveau tableau B avec le mêmes dimensions et valeurs que A. Le tableau d'origine A n'est pas modifié. Cette méthode nécessite moins d'allocation de mémoire que numpy.copy.

numpy.copy(B, A)

Cette méthode n'est pas légale telle que vous l'avez écrite. Ce devrait être B = numpy.copy(A). numpy.copy crée un nouveau tableau B avec les mêmes dimensions et valeurs que A. Cette méthode nécessite plus d'allocation de mémoire que B[:] = A car elle crée une copie physique distincte des données du tableau d'origine.

Quand la mémoire supplémentaire est-elle allouée ?

Une mémoire supplémentaire est allouée lorsque vous utilisez numpy.copy pour créer une nouvelle copie physique du tableau. En effet, il alloue un nouveau bloc de mémoire contigu pour les données copiées.

Quand la mémoire n'est-elle pas allouée ?

La mémoire n'est pas allouée lorsque vous utilisez B = A parce que vous renommez simplement le tableau d'origine. La mémoire n'est pas non plus allouée lorsque vous utilisez B[:] = A car elle réutilise le même emplacement mémoire que le tableau d'origine.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729560494. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3