my_list = []
for x in range(len(imgbinary)):
for y in range(len(imgbinary[0])):
if imgbinary[x][y]==255 :
my_list.append(imggray[x][y])
my_list.sort()
我希望这段代码尽可能快,我确定使用numpy会更好。
答案 0 :(得分:0)
仅
my_list = imggray[imgbinary == 255]
imgbinary == 255生成2d布尔数组,然后从数组中选择值 由于值相等,排序也没用
答案 1 :(得分:0)
您也可以尝试np.where
:
my_list = sorted(imggray[np.where(imgbinary==255)])
答案 2 :(得分:0)
根据您的代码,您想要在imggray
等于255的像素位置获取imgbinary
的值。
这应该可以正常工作,而无需使用任何循环:
my_list = sorted(imggray[imgbinary ==255])
以20乘20幅图像显示速度:
%timeit sorted(imggray[imgbinary ==255])
10000 loops, best of 3: 111 µs per loop