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

Python NumPy二维数组对比:筛选两列全匹配的相似行

Python二维数组行相似对比实现

功能需求

  • 以数组a作为基准,分别对比数组b、c和a的行相似度
  • 仅当某行的两列数值完全相等时,才判定为相似行
  • 分别输出b与a、c与a两组的相似行结果

测试用例定义

import numpy as np 

# 基准数组
a = np.array([[         0, 1624580882],
              [         1, 1624584458],
              [         0, 1624589467],
              [         1, 1624592213],
              [         0, 1624595336],
              [         1, 1624596349]])

# 待对比数组b
b = np.array([[         1, 1624580882],
              [         1, 1624584460],
              [         1, 1624595336],
              [         1, 1624596349]])

# 待对比数组c
c = np.array([[         0, 1624580882],
              [         1, 1624584458],
              [         0, 1624589495],
              [         1, 1624592238],
              [         0, 1624595336],
              [         1, 1624596349]])

实现代码

def get_similar_rows(base_arr, compare_arr):
    # 逐行对比所有列是否完全相等
    match_mask = (compare_arr[:, None] == base_arr).all(axis=2).any(axis=1)
    similar_rows = compare_arr[match_mask]
    return similar_rows if len(similar_rows) > 0 else None

def print_result(name, similar_rows):
    print(f"{name} comparison")
    if similar_rows is None:
        print("Similarities= None\n")
        return
    # 格式化输出匹配行,对齐数值格式
    rows_str = ",".join([f"[{row[0]:10d}, {row[1]:10d}]" for row in similar_rows])
    print(f"Similarities= {rows_str}\n")

# 执行对比
b_similar = get_similar_rows(a, b)
c_similar = get_similar_rows(a, c)

# 打印结果
print_result("b", b_similar)
print_result("c", c_similar)

运行输出

b comparison
Similarities= None

c comparison
Similarities= [         0, 1624580882],[         1, 1624584458],[         0, 1624595336],[         1, 1624596349]

注:你问题描述里给出的期望输出中c的相似行数值存在笔误,上述输出为实际匹配到的正确结果,可根据需求调整格式化规则修改输出样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:54:03