Créalo o no, después de perfilar mi código actual, la operación repetitiva de la reversión de matriz numpy se comió una gran parte del tiempo de ejecución. Lo que tengo ahora es el método común basado en la vista:
reversed_arr = arr[::-1]
¿Hay alguna otra manera de hacerlo de manera más eficiente, o es solo una ilusión de mi obsesión con el rendimiento poco realista?
arr
es una matriz numpy.
f2py
¡es tu amigo! A menudo vale la pena escribir partes críticas del rendimiento de un algoritmo (especialmente en informática científica) en otro idioma y llamarlo desde python. ¡Buena suerte!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Buscar def flipud
. La función tiene literalmente cuatro líneas de largo.
arr[::-1]
solo devuelve una vista invertida. Es lo más rápido que puede obtener y no depende de la cantidad de elementos en la matriz, ya que solo cambia los pasos. ¿Lo que estás invirtiendo es realmente una matriz numpy?