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

如何用Numpy array masking找出两数组差异行的索引?

解决方案:找出Numpy数组中与另一数组不同的行索引及内容

首先构造示例数组:

import numpy as np

# 第一个数组
arr1 = np.array([[1, 2], [3, 4], [5, 6], [6, 5]])
# 第二个数组
arr2 = np.array([[1, 2], [3, 4]])

核心实现代码

利用np.isin结合行维度的全匹配判断,再通过掩码筛选目标行:

# 生成掩码:标记arr1中不在arr2里的行
mask = ~np.isin(arr1, arr2).all(axis=1)
# 获取差异行的索引
diff_indices = np.where(mask)[0]
# 获取差异行的内容
diff_rows = arr1[mask]

代码解释

  • np.isin(arr1, arr2):对arr1的每个元素,判断是否存在于arr2中,返回与arr1同形状的布尔数组。
  • .all(axis=1):沿着行的维度(axis=1)判断整行所有元素都满足条件,即整行完全存在于arr2中,返回一维布尔数组。
  • ~:对布尔数组取反,得到标记不在arr2中的行的掩码。
  • np.where(mask)[0]:提取掩码中True对应的索引值,也就是差异行的位置。
  • arr1[mask]:直接通过掩码筛选出arr1中的差异行。

运行结果

执行上述代码后:

  • diff_indices的结果为 array([2, 3])
  • diff_rows的结果为 array([[5, 6], [6, 5]]),完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:40:43