1. ホーム
  2. パイソン

[解決済み】numpyの配列を逆引きする最も効率的な方法

2022-03-26 18:45:05

質問

信じられないかもしれませんが、私の現在のコードをプロファイリングした結果、numpy配列の復帰の繰り返し操作が実行時間の巨大な塊を食っていました。私が今持っているのは、一般的なビューベースのメソッドです。

reversed_arr = arr[::-1]

他にもっと効率的な方法はないのでしょうか、それとも非現実的なnumpyの性能へのこだわりからくる錯覚なのでしょうか。

どのように解決するのですか?

を作成する際に reversed_arr は、元の配列に対するビューを作成していることになります。 そして、元の配列を変更すると、ビューはその変更を反映したものに更新されます。

必要以上に頻繁にビューを再作成していませんか? このようなことができるようになるはずです。

arr = np.array(some_sequence)
reversed_arr = arr[::-1]

do_something(arr)
look_at(reversed_arr)
do_something_else(arr)
look_at(reversed_arr)

私はnumpyの専門家ではありませんが、これがnumpyで物事を行う最も速い方法のように思われます。 もしこれがすでにやっていることであれば、改善することはできないと思います。

P.S. numpyのビューに関する素晴らしい議論はこちらです。

numpyの配列にビュー?