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

如何合并两个NumPy数组 重叠坐标优先取1实现数组叠加

NumPy数组合并实现方案

你需要的优先保留值1、其余位置取对应非1值的合并逻辑,可以直接通过NumPy的条件索引实现,逻辑非常清晰:

  • 先标记出两个数组中所有值为1的坐标位置,这些位置最终结果统一取1
  • 以b数组为基底拷贝生成初始结果,再把所有标记为1的位置赋值为1即可

对应实现代码如下:

import numpy as np

# 原有输入数组定义
a = np.array([[[1, 0],
             [1, 1]],
            [[1, 0],
             [0, 0]],
            [[0, 0],
             [1, 0]]])

b = np.array([[[0, 2],
             [0, 0]],
            [[0, 0],
             [0, 2]],
            [[0, 2],
             [0, 2]]])

# 核心合并逻辑
mask = (a == 1) | (b == 1)  # 标记所有存在值1的位置
result = b.copy()
result[mask] = 1

# 打印验证结果
print(result)

运行后输出和你预期完全一致:

[[[1 2]
  [1 1]]

 [[1 0]
  [0 2]]

 [[0 2]
  [1 2]]]

如果需要精简写法,也可以直接用np.where一行完成核心计算,运行效果完全相同:

result = np.where((a == 1) | (b == 1), 1, b)

逻辑说明:逐位置判断如果当前坐标在a或b中存在值1,就返回1,否则返回b对应位置的值,完全匹配你给出的合并规则。如果后续a数组存在0、1之外的其他有效值,只需要调整第三个参数的取值逻辑即可,比如改成np.where((a==1)|(b==1), 1, np.where(a!=0, a, b))就能实现「优先取1,其次取a的非0值,最后取b的值」的扩展规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:06:13