Pythonで”配列内で重複のない右側からの連続領域の抽出”を 最も計算コストの低い方法で実現したいです。
具体的には、
[1,2,3,4,1,2,5]
という配列があったとして、右側から値を見ていき、重複が出るまで左に進む、
というようなイメージです。このケースでは得たい結果は
[3 4 1 2 5]
ということになります。
パッと思いつくのは、
python
1arr = np.array([1,2,3,4,1,2,5]) 2 3max_index = 0 4for i in arr: 5 if arr[max_index:].size != np.unique(arr[max_index:]).size: 6 max_index += 1 7 8print(arr[max_index:])
のようなコードなのですが、配列を実質全部サーチするのに近い処理となり、
配列が長くなると処理時間が掛かりそうです。
上記コード以外で、何か良い方法があればご教示いただけますでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 09:50
退会済みユーザー
2021/09/22 10:52
2021/09/22 12:30
2021/09/22 16:12
2021/09/27 22:54