You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效按特征大小标记二维布尔Numpy数组中的特征?

高效将特征标记替换为像素数量的实现方法

直接利用numpy的向量化操作替代循环,能大幅提升速度,具体步骤如下:

  1. 先用scipy.ndimage.label完成特征标记,得到标记数组labels:
import numpy as np
from scipy.ndimage import label

# 示例布尔数组
mask = np.random.rand(40, 80) > 0.5
labels, _ = label(mask)
  1. 用np.bincount统计每个标记对应的像素数量,再通过索引直接替换标记值:
# 统计所有标记的像素数(包括背景0)
feature_counts = np.bincount(labels.ravel())
# 直接将标记数组替换为对应特征的像素数
size_labeled = feature_counts[labels]
  1. (可选)如果需要让背景(原标记0的区域)保持0,而非背景像素的总数,只需额外处理:
size_labeled[labels == 0] = 0

为什么这个方法快?

np.bincount是numpy底层优化的向量化操作,完全绕过了Python层的循环,能把耗时降到原循环方法的几百分之一甚至更低,尤其适合大尺寸数组的处理。

内容的提问来源于stack exchange,提问作者zabop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:32:34