2016-05-06 2 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); depth (600 600) – user4543816

+0

Вы можете поделиться своим кодом? Точно, что вы сделали. – kanayamalakar

ответ

2

Подход № 1

мне неэффективностью выглядит как на последних двух шагов. Таким образом, можно было бы избежать создания first_cut_depth_3D и получить first_cut_final с по репликации Муха данных и поэлементного умножения с NumPy broadcasting, как так -

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 (для RGB входных массивов)

Если first_cut_depth должен быть данными изображения RGB, он будет иметь только положительные значения. Таким образом, можно использовать это для гораздо более эффективного однострочного решения, например:

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

ОК спасибо .. мне попробовать – user4543816

Смежные вопросы