Maison  >  Article  >  développement back-end  >  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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 10:25:30604parcourir

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 un nouveau tableau. Au lieu de cela, vous liez un nouveau nom (B) au tableau existant (A). En conséquence, toute modification apportée à un tableau sera reflétée 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn