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

如何检查一个数组中的元素是否存在于另一个数组中(如果存在),请使用Python打印计数,python,pandas,numpy,Python,Pandas,Numpy,我有两个数组 A=[1,2,3,4,6,5,5,5,8,9,7,7,7] B=[1,5,7] 如果A中有B元素,则打印出现的次数 输出 1:1 5:3 7:3肾盂道: >>> 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:co

我有两个数组

A=[1,2,3,4,6,5,5,5,8,9,7,7,7]
B=[1,5,7]
如果A中有B元素,则打印出现的次数 输出 1:1 5:3 7:3肾盂道:

>>> 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}
>>>

对于排序数组,您可以提出更好的算法,可以更快地工作,但一般来说,不使用库而使用更简单、更自然的方法是可行的

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

上述两个答案都有效

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

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

您标记了熊猫,因此这里有一个简单的解决方案: 对所有内容进行计数,然后仅返回与
B中的项目重叠的子集

import pandas as pd

pd.Series(A).value_counts().reindex(B).to_dict()
#{1: 1, 5: 3, 7: 3}
该软件包对此问题提供了矢量化解决方案(免责声明:我是其作者):


在发布问题时,您必须提供您的尝试,以便我们可以为您指出正确的方向
import numpy_indexed as npi
keys, counts = npi.count(A)
counts = counts[npi.indices(keys, B)]