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

如何返回两个2D数组的差异且保持原有维度和元素位置

你可以通过布尔掩码+全零初始化的方式实现,核心逻辑是保留原数组维度的前提下,仅对差异位置赋值:

核心实现步骤

  • 先通过arr1 != arr2生成和原数组维度完全一致的布尔掩码,差异位置为True,相同位置为False
  • 初始化一个和arr2结构完全一致的全0数组
  • 将掩码为True的位置替换为arr2对应位置的元素即可

完整可运行代码

import numpy as np

# 示例输入
arr1 = np.array([
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8]
])
arr2 = np.array([
    [0, 1, 2],
    [3, 5, 5],
    [6, 7, 8]
])

# 生成差异数组
mask = arr1 != arr2
diff = np.zeros_like(arr2)
diff[mask] = arr2[mask]

print(diff)

运行输出

[[0 0 0]
 [0 5 0]
 [0 0 0]]

原代码无法保留维度的原因是np.nonzero返回的是差异位置的索引序列,直接索引取值会将结果拍平为一维数组,丢失原维度信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:09:01