如何在统计2D numpy数组(图像)频率时忽略数值0?
忽略0值的图像数组频率统计实现
直接在统计前过滤掉数组中的0值即可,这是最简便且高效的方式,避免后续再从统计结果中剔除0的开销:
# 过滤非零值并统计频率 freq_count = dict(zip(*np.unique(img_arr[img_arr != 0], return_counts=True))) for val in freq_count.keys(): # 处理逻辑 pass
补充说明
img_arr[img_arr != 0]会直接从2D数组中提取所有非零元素,返回一维数组,无需额外调用ravel()- 如果是在原有代码基础上修改,也可以统计完成后删除0对应的键,但这种方式效率更低(先统计了0再删除):
freq_count = dict(zip(*np.unique(img_arr.ravel(), return_counts=True))) freq_count.pop(0, None) # 用pop避免0不存在时报错 for val in freq_count.keys(): # 处理逻辑 pass
内容的提问来源于stack exchange,提问作者user16971617
相关产品推荐
相关产品推荐

