[python] 파이썬에서 ndarray에서 특정 항목의 발생을 계산하는 방법은 무엇입니까?

파이썬에서는 다음 y
과 같이 인쇄 된 ndarray 가 있습니다.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])

이 배열에 01개와 몇 개가 있는지 계산하려고합니다 .

그러나 나는 입력 할 때 y.count(0)또는 y.count(1)그것이 말하는,

numpy.ndarray 객체에 속성이 없습니다 count

어떻게해야합니까?



답변

>>> a = numpy.array([0, 3, 0, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 3, 4])
>>> unique, counts = numpy.unique(a, return_counts=True)
>>> dict(zip(unique, counts))
{0: 7, 1: 4, 2: 1, 3: 2, 4: 1}

numpy 방법 :

사용 collections.Counter;

>> import collections, numpy

>>> a = numpy.array([0, 3, 0, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 3, 4])
>>> collections.Counter(a)
Counter({0: 7, 1: 4, 3: 2, 2: 1, 4: 1})


답변

무엇 사용에 대한 numpy.count_nonzero처럼 뭔가를

>>> import numpy as np
>>> y = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])

>>> np.count_nonzero(y == 1)
1
>>> np.count_nonzero(y == 2)
7
>>> np.count_nonzero(y == 3)
3


답변

개인적으로, 나는 가고 싶어 :
(y == 0).sum()(y == 1).sum()

예 :

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()


답변

귀하의 경우에는 numpy.bincount를 볼 수도 있습니다.

In [56]: a = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])

In [57]: np.bincount(a)
Out[57]: array([8, 4])  #count of zeros is at index 0 : 8
                        #count of ones is at index 1 : 4


답변

배열로 변환 y목록에 l할 다음과 l.count(1)l.count(0)

>>> y = numpy.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
>>> l = list(y)
>>> l.count(1)
4
>>> l.count(0)
8 


답변

y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])

당신은 그들이 단지 것을 알고있는 경우 01:

np.sum(y)

당신에게 하나의 숫자를 제공합니다. np.sum(1-y)제로를 제공합니다.

약간의 일반성을 위해 00이 아닌 (그러나 2 또는 3) 계산 하지 않으려는 경우 :

np.count_nonzero(y)

0이 아닌 수를 제공합니다.

그러나 더 복잡한 것이 필요하다면 numpy가 좋은 count옵션 을 제공하지 않을 것이라고 생각 합니다. 이 경우 컬렉션으로 이동하십시오.

import collections
collections.Counter(y)
> Counter({0: 8, 1: 4})

이것은 dict처럼 행동합니다

collections.Counter(y)[0]
> 8


답변

원하는 번호를 정확히 알고 있다면 다음을 사용할 수 있습니다.

lst = np.array([1,1,2,3,3,6,6,6,3,2,1])
(lst == 2).sum()

배열에서 2가 몇 번 발생했는지를 반환합니다.