簡體   English   中英

Numpy掩碼計算滿足條件的元素數量

[英]Numpy mask to count number of elements satisfying a condition

如何使用Numpy對此for循環進行向量化?

count=0
arr1 = np.random.rand(184,184)
for i in range(arr1.size[0]):
    for j in range(arr1.size[1]):
        if arr1[i,j] > 0.6:
            count += 1
print count

我試過了:

count=0
arr1 = np.random.rand(184,184)
mask = (arr1>0.6)
indices = np.where(mask)
print indices , len(indices) 

我期望len(指數)給予計數,但事實並非如此。 請給我任何建議。

獲取一個布爾掩碼並計算“True”:

(arr1 > 0.6).sum()

np.count_nonzero應該比總和快一點:

np.count_nonzero(arr1 > 0.6)

事實上,它的速度是原來的三倍

>>> from timeit import repeat
>>> kwds = dict(globals=globals(), number=10000)
>>> 
>>> arr1 = np.random.rand(184,184)
>>> 
>>> repeat('np.count_nonzero(arr1 > 0.6)', **kwds)
[0.15281831508036703, 0.1485864429268986, 0.1477385900216177]
>>> repeat('(arr1 > 0.6).sum()', **kwds)
[0.5286932559683919, 0.5260644309455529, 0.5260107989888638]

您還可以使用Numpy數組的size屬性:

arr1 = np.random.rand(184,184)

arr1[ arr1 > 0.6 ].size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM