J'essaye d'adapter la structure sous-jacente du code de traçage (matplotlib) qui est mise à jour sur un temporisateur pour passer de l'utilisation de listes Python pour les données de tracé à l'utilisation de matrices numpy. Je veux être capable de réduire le plus possible le pas de temps pour l'intrigue, et comme les données peuvent atteindre des milliers de points, je commence à perdre rapidement un temps précieux si je ne le peux pas. Je sais que les tableaux numpy sont préférés pour ce genre de choses, mais j'ai du mal à comprendre quand je dois penser comme un programmeur Python et quand je dois penser comme un programmeur C++, maximiser mon efficacité d'accès à la mémoire.Comment la récupération de place Pythonic avec numpy array est-elle ajoutée et supprimée?
Il est indiqué dans les docs scipy.org pour la fonction append() qu'il renvoie une copie des tableaux ajoutés ensemble. Toutes ces copies sont-elles correctement récupérées? Par exemple:
import numpy as np
a = np.arange(10)
a = np.append(a,10)
print a
C'est ma lecture de ce qui se passe sur le C++ - niveau, mais si je savais ce que je parlais, je ne poserais pas la question, donc s'il vous plaît me corriger si je Je me trompe! = P
Tout d'abord, un bloc de 10 entiers est alloué, et le symbole a pointe au début de ce bloc. Ensuite, un nouveau bloc de 11 entiers est alloué, pour un total de 21 ints (84 bytes) étant utilisé. Ensuite, le pointeur a est déplacé au début du bloc 11-int. Ma supposition est que ceci aboutirait à ce que l'algorithme de collecte des ordures décrémente le compte de référence du bloc 10-int à zéro et le désaffecte. Est-ce correct? Si ce n'est pas le cas, comment puis-je m'assurer de ne pas créer de surcharge lors de l'ajout?
Je ne suis pas sûr de savoir comment supprimer correctement un tableau numérique quand j'ai fini de l'utiliser. J'ai un bouton de réinitialisation sur mes parcelles qui rince simplement toutes les données et recommence. Quand j'avais des listes, cela a été fait en utilisant del data[:]
. Y a-t-il une fonction équivalente pour les tableaux numpy? Ou devrais-je juste dire data = np.array ([]) et compter sur le garbage collector pour faire le travail pour moi?
Donc, fondamentalement, je dois me détendre. =) Merci pour la clarification, je pensais que c'était comme ça que les choses marchaient mais je n'étais pas 100% clair à ce sujet. – pr0crastin8r