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

Python:统计二维数组每行与目标数组的元素匹配数量

问题与解决方案

给定数据

a = [ ['Active', '1.0', '0.0', 'Business', 'London'], ['Active', '0.0', '0.0', 'Business', 'Scotland'] ]

b = ['Active', '0.0', '0.0', 'Retail', 'London']

需求与期望输出

需要统计二维数组a中每行与一维数组b对应列元素的匹配数量(顺序必须严格对应同列),期望输出为[3, 3]——a的第0行与b有3个同列元素匹配,第1行同样有3个。同时需考虑大规模数组的处理性能。

已尝试的错误代码

[sum(x==y) for x,y in zip(a,b)]

错误原因:zip(a,b)会把a的每一行和b的单个元素配对(比如a的第一行和b[0]配对),而非将a的每一行与整个b逐元素比较,逻辑完全错误。


可行解决方案

1. 纯Python基础实现(适用于中小规模数据)

通过列表推导式,对a的每一行,逐元素与b对应位置比较后求和:

[sum(x == y for x, y in zip(row, b)) for row in a]

执行后直接得到预期的[3, 3],逻辑简单直观。

2. 高性能实现(适用于大规模数据)

使用numpy的向量化运算,能大幅提升处理效率:

import numpy as np

# 转换为numpy数组
a_np = np.array(a)
b_np = np.array(b)

# 逐元素比较后按行求和,再转回列表
result = (a_np == b_np).sum(axis=1).tolist()

向量化运算避免了Python循环的开销,处理百万级以上数据时性能优势明显。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:45:29