Как проверить, существуют ли элементы в одном массиве в другом массиве, если это так, выведите счетчик с помощью Python - PullRequest
0 голосов
/ 24 августа 2018

У меня есть два массива

A=[1,2,3,4,6,5,5,5,8,9,7,7,7]
B=[1,5,7]

Если элементы B в A, выведите количество вхождений выход 1: 1 5: 3 7: 3

Ответы [ 5 ]

0 голосов
/ 25 августа 2018

Пакет numpy_indexed имеет векторизованное решение этой проблемы (отказ от ответственности: я его автор):

import numpy_indexed as npi
keys, counts = npi.count(A)
counts = counts[npi.indices(keys, B)]
0 голосов
/ 24 августа 2018

Вы пометили pandas, поэтому вот простое решение: Посчитайте все, затем верните только подмножество, которое перекрывается с элементами в B

import pandas as pd

pd.Series(A).value_counts().reindex(B).to_dict()
#{1: 1, 5: 3, 7: 3}
0 голосов
/ 24 августа 2018

Для отсортированного массива вы можете придумать лучшие алгоритмы, которые работают быстрее, но в целом более простой и более естественный способ без использования библиотек будет

for i in B:
    ans = 0
    for j in A:
        if i == j:
            ans += 1
    print(i,':',ans)
0 голосов
/ 24 августа 2018

оба вышеуказанных ответа сработали.

Я использовал счетчик, так как B имел все элементы A

import collections
c = collections.Counter(A)
print(c)
0 голосов
/ 24 августа 2018

Питонический путь:

>>> 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}
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...