Как считать вхождения элемента в одномерном массиве на Python

  1. Используя collections вы можете найти количество вхождений в массив на Python
  2. Используя библиотеку NumPy, мы можем найти количество вхождений в массив на Python

При работе с массивом одной из основных проблем, с которой может столкнуться разработчик, является подсчет количества вхождений элемента. Представьте себе, что если у вас есть массив по количеству проданных элементов на сайте электронной коммерции за 10 дней, то вы хотели бы знать количество дней, когда продается более 100 элементов.

sales=[0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]

Самый простой способ решить эту проблему - получить количество раз по 100 в массиве.

Используя collections вы можете найти количество вхождений в массив на Python

collections действуют как контейнеры для хранения данных. Мы можем легко импортировать модуль сбора данных и использовать функцию счетчика.
Проверьте код ниже:

>>>import collections
>>>sales=[0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]  
>>>print(collections.Counter(sales))
Counter({100: 4, 80: 3, 70: 2, 10: 2, 0: 1, 20: 1, 30: 1, 40: 1})

Результирующий вывод - словарь. В нем перечислено, сколько раз каждый элемент массива произошел.

Однако, если мы хотим вывести количество раз по 100 в массиве продаж, мы можем получить его из словаря.

>>>print(collections.Counter(sales)[100])
4

Модуль Collection также работает с десятичными числами и строками.

>>>floatarr=[0.7, 10.0, 10.1, .8, .7, .8, .2, .1, 10.0, 
10.0, .8, .8, .7, .7, .8]
>>>print(collections.Counter(floatarr))
Counter({0.8: 5, 0.7: 4, 10.0: 3, 10.1: 1, 0.2: 1, 0.1: 1})

>>>stringarr=["george","mark","george","steve","george"]
>>>print(collections.Counter(stringarr))
Counter({'george': 3, 'mark': 1, 'steve': 1})

Используя библиотеку NumPy, мы можем найти количество вхождений в массив на Python

Тем не менее, мы также можем использовать NumPy, который является библиотекой, определенной на Python для работы с большими массивами, а также содержит большое количество математических функций.

Существует несколько способов использования функций, определенных в NumPy, для возврата количества элементов в массиве.

Использование функции unique в Numpy

Функция Unique вместе с функцией Count возвращает словарь подсчета каждого элемента. Также работает с десятичными числами и строками.

>>>import collections, numpy
>>>aUnique = numpy.array([0, 100, 100, 80, 70, 80, 20, 10, 100, 
100, 80, 70, 10, 30, 40])

>>>unique, counts = numpy.unique(aUnique, return_counts=True)

>>>print(dict(zip(unique, counts)));  
{0: 1, 10: 2, 20: 1, 30: 1, 40: 1, 70: 2, 80: 3, 100: 4}

Использование функции count_nonzero в Numpy

Использование count_nonzero возвращает количество искомого элемента. Это обеспечивает легкий для чтения интерфейс и меньшее количество строк кода.

>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10, 
100, 100, 80, 70, 10, 30, 40,"abc"])
>>>print(numpy.count_nonzero(aCountZero == "abc"))
1

count_nonzero также работает с десятичными числами и строками.

>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10,

100, 100, 80, 70, 10, 30, 40])

>>>print(numpy.count_nonzero(aCountZero == 100.1))
1

Использование функции bincount в Numpy - только для массивов с целыми числами

Однако, если у вас есть массив, состоящий только из целых чисел, вы можете использовать функцию bincount в NumPy. Самое лучшее, что она возвращает результаты в виде массива.

>>>abit = numpy.array([0, 6, 0, 10, 0, 1, 1, 0, 10, 9, 0, 1])

>>>print(numpy.bincount(abit))

[5 3 0 0 0 0 1 0 0 1 2]

Для чисел в массиве результат отображает количество элементов в порядке возрастания. Например, 0 в массиве abit происходит 5 раз, а 10, 2 раза, что обозначается первым и последним элементом массива.

В заключение следует отметить, что существует достаточно большое количество вариантов, из которых можно выбрать, когда нужно узнать количество вхождений элемента в одномерный массив. Следуйте за нами, как мы обсуждаем эффективность каждого из этих решений во времени, в нашей следующей статье.

Сопутствующая статья - Python Array

  • Как инициировать 2-D массив на Python
  • comments powered by Disqus