339 votes

Le moyen le plus efficace d'inverser un tableau numpy

Croyez-le ou non, après avoir profilé mon code actuel, les opérations répétitives de réversion de tableaux numpy ont absorbé une partie gigantesque du temps d'exécution. Ce que j'ai maintenant est la méthode commune basée sur les vues:

 reversed_arr = arr[::-1]
 

Y a-t-il un autre moyen de le faire plus efficacement, ou est-ce simplement une illusion de mon obsession de la performance numpy irréaliste?

286voto

steveha Points 24808

Lorsque vous créez reversed_arr de la création d'un point de vue dans le tableau d'origine. Vous pouvez ensuite modifier le tableau d'origine, et la vue est mise à jour pour refléter les modifications.

Êtes-vous re-création de la vue plus souvent que vous en avez besoin? Vous devriez être en mesure de faire quelque chose comme ceci:

arr = np.array(some_sequence)
reversed_arr = arr[::-1]

do_something(arr)
look_at(reversed_arr)
do_something_else(arr)
look_at(reversed_arr)

Je ne suis pas un numpy expert, mais il semble que ce serait le moyen le plus rapide pour faire les choses dans numpy. Si c'est ce que vous faites déjà, je ne pense pas que vous pouvez faire pour l'améliorer.

P. S. la Grande discussion de numpy vues ici:

Vue sur un tableau numpy?

40voto

user3712008 Points 99

np.fliplr () retourne le tableau de gauche à droite. (Remarque: cela ne fonctionne pas sur les tableaux 1d cependant)

-12voto

John D. Cook Points 19036

Si vous ne voulez pas de vue, vous pouvez faire ceci:

 arr = -arr
arr.sort()
arr = -arr
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X