有没有办法合并这些步骤,以便通过减少迭代次数来提高效率。
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 :(得分: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)