Croyez-le ou non, après avoir profilé mon code actuel, l'opération répétitive de réversion du tableau numpy a mangé une partie géante du temps d'exécution. Ce que j'ai en ce moment, c'est la méthode commune basée sur la vue:
reversed_arr = arr[::-1]
Y a-t-il une autre façon de le faire plus efficacement, ou est-ce juste une illusion de mon obsession pour les performances numpy irréalistes?
arr
est un tableau numpy.
f2py
est votre ami! Il est souvent utile d'écrire des parties critiques d'un algorithme (en particulier dans le calcul scientifique) dans un autre langage et de l'appeler à partir de python. Bonne chance!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Recherchez def flipud
. La fonction comporte littéralement quatre lignes.
arr[::-1]
renvoie juste une vue inversée. C'est aussi rapide que possible et ne dépend pas du nombre d'éléments dans le tableau, car cela ne fait que changer les foulées. Est-ce que ce que vous inversez est en fait un tableau numpy?