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

如何在Python中计算二维数组对应行的相同元素数量?

处理二维数组对应子数组的相同元素统计

嘿,我明白你的需求啦!既然你已经搞定一维数组的相同元素统计,那二维的其实就是在一维逻辑上套一层循环而已,超级好上手~

第一步:复用你已掌握的一维数组统计逻辑

先把你会的一维统计写成一个可复用的小函数,比如用集合求交集的方式(如果你的数组里没有重复元素,这种方法最简洁):

def count_common_elements(arr1, arr2):
    # 用集合求交集,再返回交集的长度
    return len(set(arr1) & set(arr2))

如果你的数组里可能有重复元素(比如同一个元素出现多次,需要统计重复次数的交集),那可以调整成用计数器的方式:

from collections import Counter

def count_common_elements(arr1, arr2):
    counter1 = Counter(arr1)
    counter2 = Counter(arr2)
    # 遍历两个计数器的共同键,取最小出现次数相加
    return sum(min(counter1[key], counter2[key]) for key in counter1 if key in counter2)

第二步:扩展到二维数组的处理

现在只需要遍历两个二维数组的对应位置的子数组,逐个调用上面的函数,最后把结果加起来就行。用zip()函数可以很方便地把两个二维数组里的子数组一一配对:

aaa = [['A','B','E','G','T'],['a','f','c','h','u']]
bbb = [['A','C','E','N','M'],['a','b','c','y','l']]

# 计算每组子数组的相同元素数,再求和
total = sum(count_common_elements(arr_a, arr_b) for arr_a, arr_b in zip(aaa, bbb))

print(total)  # 输出:4,也就是你说的2+2

简单解释一下

  • zip(aaa, bbb)会把aaa里的第一个子数组和bbb里的第一个子数组配对,第二个和第二个配对,正好符合你“对应位置逐一对比”的需求。
  • 我们把每一对子数组传入统计函数,得到每组的相同元素数,最后用sum()把所有组的结果加起来,就得到最终的总和啦。

这样是不是就清晰多了?本质就是把二维问题拆解成你已经会的一维问题,然后循环处理每一组就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:12:05