Acredite ou não, depois de traçar o perfil do meu código atual, a operação repetitiva da reversão numpy da matriz consumiu uma grande parte do tempo de execução. O que tenho agora é o método comum baseado em exibição:
reversed_arr = arr[::-1]
Existe alguma outra maneira de fazê-lo de forma mais eficiente, ou é apenas uma ilusão da minha obsessão por desempenho numpy irrealista?
arr
é uma matriz numpy.
f2py
é seu amigo! Muitas vezes, vale a pena escrever partes críticas de desempenho de um algoritmo (especialmente em computação científica) em outra linguagem e chamá-lo de python. Boa sorte!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Pesquise por def flipud
. A função tem literalmente quatro linhas.
arr[::-1]
apenas retorna uma visão invertida. É o mais rápido possível, e não depende do número de itens na matriz, pois apenas altera os avanços. O que você está revertendo é realmente uma matriz numpy?