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

如何用Numpy基于2D深度数组生成3D二进制掩码?

Numpy向量化创建3D掩码数组

核心思路是利用Numpy的广播机制,通过维度扩展让2D深度数组与第三维度的索引数组做逐元素比较,直接生成目标掩码,全程无需循环。

实现步骤

  • 生成第三维度的索引数组,对应每个位置的索引0到8(与输出数组的第三维度长度一致)
  • 将2D深度数组扩展为3D(新增一个维度),利用广播与索引数组比较,得到布尔掩码
  • 将布尔数组转换为数值类型(float或int),得到最终的3D掩码数组

代码示例

import numpy as np

# 定义输入的2D深度数组
tst = np.arange(1, 10).reshape(3,3)
# 生成第三维度的索引
depth_indices = np.arange(9)
# 利用广播生成掩码数组
blk = (depth_indices < tst[..., np.newaxis]).astype(float)

结果验证

print(blk[0,0])
# 输出:array([1., 0., 0., 0., 0., 0., 0., 0., 0.])

print(blk[1,2])
# 输出:array([1., 1., 1., 1., 1., 1., 0., 0., 0.])

print(blk[2,2])
# 输出:array([1., 1., 1., 1., 1., 1., 1., 1., 1.])

补充说明

tst[..., np.newaxis]的作用是将原(3,3)的2D数组扩展为(3,3,1)的3D数组,这样Numpy会自动将depth_indices(形状(9,))广播为(3,3,9),与扩展后的tst逐元素比较,得到的布尔数组直接对应需要填充1或0的位置,最后转换为数值类型即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:15:04