Как подсчитать количество вхождений определенного элемента в ndarray?
Как посчитать количество 0
и 1
в следующем массиве?
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
При попытке использовать метод y.count(0)
возникает ошибка:
numpy.ndarray
object has no attributecount
Как правильно подсчитать количество нулей и единиц в массиве с использованием NumPy?
5 ответ(ов)
Лично я бы использовал следующий подход:
import numpy as np
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
num_zeros = (y == 0).sum()
num_ones = (y == 1).sum()
Таким образом, num_zeros
будет содержать количество нулей в массиве y
, а num_ones
— количество единиц. Это простой и эффективный способ подсчета значений в массиве.
Для массива, содержащего только нули и единицы, использование np.sum(y)
даст вам количество единиц, так как сумма всех единиц будет равна количеству этих единиц. Аналогично, для подсчета количества нулей вы можете использовать np.sum(1 - y)
, что также сработает, так как все нули преобразуются в единицы.
Если вам нужно что-то более общее и вы хотите подсчитать количество ненулевых элементов (возможно, это 2 или 3, а не только 0 и 1), вы можете воспользоваться np.count_nonzero(y)
— эта функция вернет количество всех ненулевых элементов в массиве.
Однако если ваши требования к подсчету более сложные и вы хотите получить детали, то в таком случае стоит обратиться к модулю collections
. Например:
import collections
collections.Counter(y)
Это создаст объект Counter
, который будет вести статистику по элементам массива и будет работать как словарь. Вы можете легко получить количество нулей или единиц следующим образом:
collections.Counter(y)[0] # вернет 8
Таким образом, вы сможете получить необходимую информацию по количеству различных элементов в вашем массиве.
Вы можете преобразовать ваш массив y
в список l
, а затем использовать метод count()
для подсчета элементов. Вот пример кода:
import numpy as np
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
l = list(y)
count_of_ones = l.count(1)
count_of_zeros = l.count(0)
print("Количество единиц:", count_of_ones) # Вывод: 4
print("Количество нулей:", count_of_zeros) # Вывод: 8
Таким образом, после преобразования массива в список, вы можете легко подсчитать количество единиц и нулей.
Если вы точно знаете, какое число вам нужно, вы можете использовать следующий код:
lst = np.array([1, 1, 2, 3, 3, 6, 6, 6, 3, 2, 1])
(count_of_twos = (lst == 2).sum()
Этот код вернет количество раз, когда число 2 встречается в вашем массиве.
Для подсчета количества вхождений определенного значения в массиве NumPy можно использовать функцию len
. Рассмотрим следующий пример:
A = np.array([1, 0, 1, 0, 1, 0, 1])
Допустим, мы хотим посчитать количество нулей в массиве.
A[A == 0] # Возвращает массив, где элементы равны 0, например: array([0, 0, 0])
Теперь окружим это выражение функцией len
, чтобы получить количество нулей:
len(A[A == 0]) # 3
Также можно посчитать количество единиц:
len(A[A == 1]) # 4
И если вы захотите проверить наличие элемента, которого нет в массиве, например 7:
len(A[A == 7]) # 0, потому что такого элемента нет.
Таким образом, мы успешно использовали len
для подсчета вхождений элементов в массиве.
Индексация массива numpy с помощью списка кортежей
Как вывести полный массив NumPy без обрезки?
Как получить доступ к i-му столбцу многомерного массива NumPy?
Наиболее эффективный способ применения функции к массиву NumPy
Различие между типами str и object в Pandas