NumPy bool 배열의 참 요소 수를 계산하는 방법
부울형 NumPy 배열 'boolar'가 있습니다.값이 다음과 같은 요소의 수를 세고 싶다.True
이 태스크 전용 NumPy 또는 Python 루틴이 있습니까?아니면 스크립트의 요소를 반복해야 합니까?
여러 가지 옵션이 있습니다.다음 두 가지 옵션이 있습니다.
boolarr.sum()
numpy.count_nonzero(boolarr)
다음은 예를 제시하겠습니다.
>>> import numpy as np
>>> boolarr = np.array([[0, 0, 1], [1, 0, 1], [1, 0, 1]], dtype=np.bool)
>>> boolarr
array([[False, False, True],
[ True, False, True],
[ True, False, True]], dtype=bool)
>>> boolarr.sum()
5
물론 그건bool
-특정 답변.보다 일반적으로는,numpy.count_nonzero
.
>>> np.count_nonzero(boolarr)
5
그 질문은 저에게 매우 유사한 질문을 해결했고, 저는 공유해야 한다고 생각했습니다.
raw python에서는sum()
세다True
의 값list
:
>>> sum([True,True,True,False,False])
3
하지만 이 방법은 작동하지 않습니다.
>>> sum([[False, False, True], [True, False, True]])
TypeError...
2개의 numpy 어레이를 비교하고 일치수(예를 들어 머신러닝에서의 올바른 클래스 예측)를 세는 것에 관해서, 다음의 2차원의 예를 유용하게 했습니다.
import numpy as np
result = np.random.randint(3,size=(5,2)) # 5x2 random integer array
target = np.random.randint(3,size=(5,2)) # 5x2 random integer array
res = np.equal(result,target)
print result
print target
print np.sum(res[:,0])
print np.sum(res[:,1])
D차원까지 확장할 수 있습니다.
결과는 다음과 같습니다.
예측:
[[1 2]
[2 0]
[2 0]
[1 2]
[1 2]]
대상:
[[0 1]
[1 0]
[2 0]
[0 0]
[2 1]]
D=1에 대한 올바른 예측 카운트:1
D=2에 대한 올바른 예측 카운트:2
boolarr.sum(axis=1 or axis=0)
축 = 1은 행의 연도 수를 출력하고 축 = 0은 열의 연도 수를 카운트합니다.
boolarr[[true,true,true],[false,false,true]]
print(boolarr.sum(axis=1))
(3,1)가 됩니다.
b[b].size
어디에b
는 문제의 Boolean ndarray 입니다.필터 처리b
위해서True
필터링된 배열의 길이를 계산합니다.
이것은 아마 효율적이지 않을 것이다.np.count_nonzero()
를 참조해 주세요.단, 다른 구문을 잊어버렸을 경우에 편리합니다.게다가 이 짧은 구문은 프로그래머의 시간을 절약합니다.
데모:
In [1]: a = np.array([0,1,3])
In [2]: a
Out[2]: array([0, 1, 3])
In [3]: a[a>=1].size
Out[3]: 2
In [5]: b=a>=1
In [6]: b
Out[6]: array([False, True, True])
In [7]: b[b].size
Out[7]: 2
1D 어레이의 경우 다음과 같은 이점이 있습니다.
import numpy as np
numbers= np.array([3, 1, 5, 2, 5, 1, 1, 5, 1, 4, 2, 1, 4, 5, 3, 4,
5, 2, 4, 2, 6, 6, 3, 6, 2, 3, 5, 6, 5])
numbersGreaterThan2= np.count_nonzero(numbers> 2)
언급URL : https://stackoverflow.com/questions/8364674/how-to-count-the-number-of-true-elements-in-a-numpy-bool-array
'programing' 카테고리의 다른 글
mysqldriver를 사용하여 데이터베이스에 연결하는 중 오류 발생 (0) | 2022.09.29 |
---|---|
Vuex 모듈이 작동하지 않는 이유는 무엇입니까?[vuex] 알 수 없는 변환 유형: moduleName/mutation (0) | 2022.09.29 |
JavaScript 문자열에서 숫자를 추출하려면 어떻게 해야 합니까? (0) | 2022.09.29 |
413 요구 엔티티가 너무 크다 - 파일 업로드 문제 (0) | 2022.09.29 |
Angular에서 활성 경로를 결정하려면 어떻게 해야 합니까? (0) | 2022.09.29 |