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

保持形状的图像分割类ID numpy数组元素检查修改高效实现方法

解决方案

直接用NumPy内置的向量化操作替代Python层循环即可,性能可以提升数百倍,完全满足实时场景要求,以下是两种适配你场景的实现:

方案1:通用np.isin实现(适合类ID范围不确定的场景)

np.isin会对输入数组做逐元素判断,返回布尔数组,你只需要对结果取反后转成整数类型即可得到目标掩码:

import numpy as np

# 你的输入示例
class_ID_array = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]
])
blacklist = [2,4,5]

# 核心逻辑,一行完成
desired_array = (~np.isin(class_ID_array, blacklist)).astype(int)

运行后输出和你期望的结果完全一致:

array([[1, 0, 1],
       [0, 0, 1],
       [1, 1, 1]])

该实现完全兼容你(13,16,1)shape的输入,输出维度和输入完全一致,无需额外调整。

方案2:查表法(最优性能,适配你类ID范围0~20的场景)

因为你的类ID取值范围极小(只有0~20共21个值),可以提前构造查表掩码,通过索引直接取值,性能比np.isin还要高30%以上:

import numpy as np

class_ID_array = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]
])
blacklist = [2,4,5]

# 提前构造掩码表,类ID最大为20所以长度设为21
mask_table = np.ones(21, dtype=np.uint8)
mask_table[blacklist] = 0

# 直接索引查表,速度极快
desired_array = mask_table[class_ID_array]

如果你的黑名单是固定的,mask_table可以在程序初始化阶段只生成一次,后续每次推理只需要执行查表那一行即可,开销几乎可以忽略。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:06:03