信じられないかもしれませんが、私の現在のコードをプロファイリングした後、numpy配列のリバートの繰り返し操作は、実行時間の巨大なチャンクを食べました。私が今持っているのは、一般的なビューベースの方法です:
reversed_arr = arr[::-1]
それをより効率的に行う他の方法はありますか、それとも非現実的な派手なパフォーマンスへの執着からの幻想ですか?
arr
、派手な配列です。
f2py
あなたの友だちです!アルゴリズムのパフォーマンスが重要な部分(特に科学計算)を別の言語で記述し、それをpythonから呼び出すことはしばしば価値があります。幸運を!
arr[::-1]
:github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py。を検索しdef flipud
ます。関数は文字通り4行です。
arr[::-1]
は、逆のビューを返します。それはあなたが得ることができるのと同じくらい速く、それはストライドを変更するだけなので、配列内のアイテムの数に依存しません。あなたが実際に派手な配列を反転させているのは何ですか?