如何检查一个数组中的元素是否存在于另一个数组中(如果有的话)使用Python打印计数

时间:2018-08-24 16:31:58

标签: python pandas numpy

我有两个数组

QueryDefs

如果A中B的元素则打印出现次数 输出 1:1 5:3 7:3

5 个答案:

答案 0 :(得分:2)

pythonic方式:

>>> import collections
>>> a= [1,2,3,4,6,5,5,5,8,9,7,7,7]
>>> b = [1,5,7]
>>> counter = collections.Counter(a)
>>> {x:counter[x] for x in b}
{1: 1, 5: 3, 7: 3}
>>>

答案 1 :(得分:1)

对于排序数组,您可以想出更好的算法,这些算法可以更快地运行,但是通常更简单,更本机的方式就是不使用库

for i in B:
    ans = 0
    for j in A:
        if i == j:
            ans += 1
    print(i,':',ans)

答案 2 :(得分:0)

以上两个答案均有效。

我使用计数器是因为B具有A的所有元素

import collections
c = collections.Counter(A)
print(c)

答案 3 :(得分:0)

您标记了<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body> <h1>A Heading</h1> <div> <input id="nightmode" type="checkbox"> <label for="nightmode">Activate night mode</label> </div> <section> <p>A section with a paragraph</p> </section> <section> <p>A second section</p> </section> <footer>The footer</footer> </body>,所以这是一个简单的解决方案: 计算所有内容,然后仅返回与pandas

中的项目重叠的子集
B

答案 4 :(得分:0)

numpy_indexed软件包针对此问题提供了矢量化解决方案(免责声明:我是其作者):

import numpy_indexed as npi
keys, counts = npi.count(A)
counts = counts[npi.indices(keys, B)]