2016-05-06 9 views
1

これらのステップを組み合わせて、繰り返し回数を減らして効率を向上させる方法はありますか?ステップを組み合わせる

first_cut_new=first_cut-res 
first_cut_depth[first_cut_depth>min_value+150]=0 
first_cut_depth[first_cut_depth>0]=1 
first_cut_depth_3D=np.dstack((first_cut_depth,first_cut_depth,first_cut_depth)) 
first_cut_final= first_cut_depth_3D * first_cut_new 
+0

入力の形状はどのようなものですか? – Divakar

+0

first_cut - (600,600,3); res-(600,600,3);深さ(600,600) – user4543816

+0

コードを共有できますか?あなたがしたことまで – kanayamalakar

答えて

2

私にアプローチ#1

は非効率性は、最後の2つの手順にあるように見えます。だから、一つはfirst_cut_depth_3Dの作成を回避し、NumPy broadcastingとフライデータ複製と要素ごとの乗算のでfirst_cut_finalを取得、そのような可能性 - (RGB入力配列の場合)

first_cut_new = first_cut-res 
first_cut_depth[first_cut_depth>min_value+150]=0 
first_cut_depth[first_cut_depth>0]=1 
first_cut_final = first_cut_depth[...,None]*first_cut_new 

アプローチ#2

first_cut_depthをRGB画像データとすると、正の値しか持たない。そのように、より効率的な1ライナーソリューションのためにこれを利用することができます。

first_cut_final = (first_cut_depth <= min_value+150)[...,None]*(first_cut-res) 
+0

first_cut_depth [first_cut_depth> min_value + 150] = 0 first_cut_depth [first_cut_depth> 0] = 1 – user4543816

+0

@ user4543816私はそれらを保持します。それらは私のボトルネックに見えません。 – Divakar

+0

okありがとうございます。私が試してみてください – user4543816