【问题标题】:How to calculate mutual elements between two 2D arrays in Python?如何在 Python 中计算两个二维数组之间的相互元素?
【发布时间】:2019-07-28 09:37:43
【问题描述】:

我有二维数组,我想比较一下

['A','E','C','G', 'T'] & ['A','C','E','N','M']
['a','f','b','c','u'] & ['a','b','c','y','l']

并计算相同的元素(无论元素的顺序如何)。

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

所以在这个例子中,输出是6(3+3)

我试过了:

c = sum(ii[0] == ii[1] for i in zip(aaa, bbb) for ii in zip(*i))
print(c)

但输出是2 (1+1)

【问题讨论】:

  • Python 有 sets 和集合操作。

标签: python arrays numpy checksum


【解决方案1】:

下面

set1 = set(['A','E','C','G', 'T']) 
set2 =  set(['A','C','E','N','M'])
common_elements = set1.intersection(set2)
print(common_elements)
print('Number of common elements is: {}'.format(len(common_elements)))

输出

{'A', 'C', 'E'}
Number of common elements is: 3

【讨论】:

    【解决方案2】:

    你可以使用:

    sum(<b>len(set(ai) &amp; set(bi))</b> for ai, bi in zip(aaa, bbb))

    这会将元素子列表转换为集合并计算交集中的元素数。

    例如:

    >>> sum(len(set(ai) & set(bi)) for ai, bi in zip(aaa, bbb))
    6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 2015-07-20
      相关资源
      最近更新 更多