Какая польза от метода bincount() из numpy? В массиве положительных(+ve) целых чисел метод numpy.bincount() подсчитывает вхождение каждого элемента.
Что такое функция np.bincount в Python?
numpy.bincount() — это метод библиотеки numpy, используемый в Python для получения частоты каждого элемента, представленного внутри массива numpy и подсчета количества вхождений каждого значения в массиве неотрицательных целых чисел. Метод numpy bincount() принимает arr_name, weights и минимальную длину в качестве аргументов и возвращает ndarray целых чисел.
Все элементы внутри массива должны быть целочисленного типа данных, а также неотрицательными; в противном случае возникает TypeError. Счетчик элемента хранится как его индекс в частотном массиве/бине.
Следовательно, мы можем сделать вывод, что каждое значение бина соответствует вхождению его индекса. Таким образом, мы можем установить размер корзины соответственно. Размер бина всегда будет равен наибольшему числу в данном массиве + 1.
Например: если массив равен [1,6,6,4,2,8,5], то размер ячейки будет равен 9, поскольку 8 является самым большим элементом в массиве. Если указан массив весов, то входной массив взвешивается по нему.
Синтаксис
|
1 |
numpy.bincount(arr_name, weights = None, minlength=0) |
Параметры
Функция bincount() принимает до трех основных параметров:
- arr_name : это входной массив, в котором должны быть подсчитаны частотные элементы.
- weights : дополнительный массив той же формы, что и входной массив.
- minlength : указывает минимальное количество бинов в выходном массиве.
Возвращаемое значение
Функция bincount() возвращает массив целых чисел.
Выходной массив состоит из нескольких вхождений значения индекса ячейки во входном массиве.
Размер выходного массива на +1 больше, чем максимальный элемент, присутствующий во входном массиве.
Программа для демонстрации работы numpy.bincount()
|
1 2 3 4 5 6 7 8 9 10 11 |
# importing the numpy module import numpy as np # Input array of non-negative integers inp_arr = np.array([1, 2, 5, 6, 2, 1, 8, 8, 8]) x = np.bincount(inp_arr) print("Output of bincount is: ", x) # printing the size of output bin print("\nSize of output bin: ", len(x)) |
Выход:
|
1 2 3 |
Output of bincount is: [0 2 2 0 0 1 1 0 3] Size of output bin: 9 |
Объяснение
В программе bincount1.py мы взяли пустой массив с именем inp_arr и сохранили несколько неотрицательных элементов внутри массива, частота которых должна быть подсчитана.
Затем мы передали полный массив в качестве параметра внутри метода np.bincount() и сохранили его возвращаемое значение в переменной с именем x.
После этого мы напечатали вывод, отобразив элементы только что полученного массива bincount с помощью x; мы можем заключить, что в np.bincount() каждое значение ячейки соответствует вхождению его индекса.
См. изображение, показанное ниже, для лучшего понимания.

Программа для понимания работы метода np.bincount(), когда в качестве параметра задан дополнительный массив весов
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# importing the numpy module import numpy as np # Input array of non-negative integers inp_arr = np.array([1, 2, 5, 6, 2, 1, 8, 8, 8]) # Weighted Array weights = np.array([1, 1, 1, 0.5, 1, 1, 1, 1, 2]) output_bin = np.bincount(inp_arr, weights) print("Output of bincount is: ", output_bin) # printing the size of output bin print("\nSize of output bin: ", len(output_bin)) |
Выход:
|
1 2 3 |
Output of bincount is: [0 2 2 0 0 1 1 0 3] Size of output bin: 9 |
Объяснение
В этом примере кода с именем bincount2.py. Параметр веса можно использовать для выполнения поэлементного сложения. Поэтому элемент, соответствующий индексу, будет добавляться поэлементно. Поэтому элементы в другом индексе задаются как:
Соответствующий элемент индекса 0 = 0, соответствующий элемент индекса 1 = 0, соответствующие элементы индекса 1 = 1+1= 2, соответствующие элементы индекса 2 = 1+1= 2, соответствующие элементы индекса 3 и 4 = 0, Соответствующий элемент индекса 5 = 1, ат. Индекс 6 соответствующего элемента = 0,5, ат.
Соответствующий элемент с индексом 7 = 0, соответствующий элемент с индексом 8 = 1 + 1 + 2 = 4.
См. изображение, показанное ниже, для лучшего понимания.

