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

数组行匹配时提取另一数组值为目标数组新增列的实现问题

实现方案

以下提供两种常用的实现方式,你可以根据自己的技术栈选择:

NumPy 实现(适合数值数组,性能更高)

如果你用NumPy处理数组,直接用向量化操作即可,代码如下:

import numpy as np

# 替换为你自己的两个数组变量即可
# arr1 = np.array([[1,2,1,0,2,0,1], ...])
# arr2 = np.array([[1,2,1,0,2,0], ...])

# 提取arr1每行前6位作为匹配基准
match_template = arr1[:, :6]
# 逐行对比得到匹配结果掩码
row_match = (arr2 == match_template).all(axis=1)
# 生成待追加的列:匹配取arr1最后一位,不匹配取0
append_col = np.where(row_match, arr1[:, -1], 0)
# 拼接得到最终结果
result = np.hstack([arr2, append_col.reshape(-1, 1)])

原生Python实现(无需依赖第三方库)

如果是普通嵌套列表结构,直接遍历逐行处理即可:

# 替换为你自己的两个嵌套列表变量
# arr1 = [[1,2,1,0,2,0,1], ...]
# arr2 = [[1,2,1,0,2,0], ...]

result = []
for idx, row2 in enumerate(arr2):
    # 循环复用arr1的行模板,适配arr2长度超过arr1的场景
    row1 = arr1[idx % len(arr1)]
    if row2 == row1[:6]:
        result.append(row2 + [row1[-1]])
    else:
        result.append(row2 + [0])

注意事项

  • 两种实现都默认元素为可直接对比的数值类型,若有字符串等特殊类型只要支持==对比逻辑同样适用
  • 原生实现里已经做了arr1的循环复用适配,如果你不需要可以直接用zip(arr1, arr2)遍历即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:57:00