Хотите верьте, хотите нет, но после профилирования моего текущего кода повторяющаяся операция возврата массивов клочков съела гигантский кусок времени выполнения. Сейчас у меня есть общий метод, основанный на представлении:
reversed_arr = arr[::-1]
Есть ли какой-то другой способ сделать это более эффективно, или это просто иллюзия из-за моей одержимости нереальным выступлением?
arr
это массив NumPy.
f2py
твой друг! Часто стоит написать критичные к производительности части алгоритма (особенно в научных вычислениях) на другом языке и вызвать его из python. Удачи!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Ищите def flipud
. Функция буквально в четыре строки.
arr[::-1]
просто возвращает перевернутое представление. Это так быстро, как вы можете получить, и не зависит от количества элементов в массиве, поскольку это просто меняет шаги. Является ли то, что вы изменили на самом деле массивом?