结合步骤

时间:2016-05-06 17:17:51

标签: python performance numpy scipy

有没有办法合并这些步骤,以便通过减少迭代次数来提高效率。

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

1 个答案:

答案 0 :(得分:2)

方法#1

对我而言,效率低下似乎是最后两步。因此,可以避免创建first_cut_depth_3D并使用NumPy broadcasting进行first_cut_final动态数据复制和元素乘法,就像这样 -

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)