Che ci crediate o no, dopo aver profilato il mio codice attuale, l'operazione ripetitiva di inversione numerica dell'array ha mangiato un grosso pezzo del tempo di esecuzione. Quello che ho in questo momento è il metodo basato sulla vista comune:
reversed_arr = arr[::-1]
C'è un altro modo per farlo in modo più efficiente, o è solo un'illusione dalla mia ossessione per la prestazione insensibile irrealistica?
arr
è un array intorpidito.
f2py
È tuo amico! Spesso vale la pena scrivere parti critiche delle prestazioni di un algoritmo (specialmente nel calcolo scientifico) in un'altra lingua e chiamarlo da Python. In bocca al lupo!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Cerca def flipud
. La funzione ha letteralmente quattro righe.
arr[::-1]
restituisce solo una vista invertita. È il più veloce possibile e non dipende dal numero di elementi nell'array, poiché cambia solo i passi. Quello che stai invertendo è in realtà un array intorpidito?