파이썬에서는 다음 y
과 같이 인쇄 된 ndarray 가 있습니다.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
이 배열에 0
몇 1
개와 몇 개가 있는지 계산하려고합니다 .
그러나 나는 입력 할 때 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 방법 :
>> 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])
당신은 그들이 단지 것을 알고있는 경우 0
및 1
:
np.sum(y)
당신에게 하나의 숫자를 제공합니다. np.sum(1-y)
제로를 제공합니다.
약간의 일반성을 위해 0
0이 아닌 (그러나 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가 몇 번 발생했는지를 반환합니다.