我有一个numpy 2d阵列(8000x7200)。我想计算值大于指定阈值的单元格数。我尝试使用双循环来完成此操作,但这需要花费很多时间。 有没有办法快速执行此计算?
答案 0 :(得分:4)
假设您的变量定义为
np.random.seed([3,1415])
a = np.random.rand(8000, 7200)
threshold = .5
然后使用sum
* (a > threshold)
是一个布尔数组,表示某个单元格的每个实例都大于某个threshold
。由于布尔值是int
的子类,False
为零,True
为1,因此我们可以轻松地将它们相加。 <{1}} numpy
默认情况下对整个数组进行求和。
sum
答案 1 :(得分:3)
你最好的选择可能是np.count_nonzero(x > threshold)
,其中x
是你的二维阵列。
顾名思义,count_nonzero
计算非零元素的数量。通过利用True
为1-ish的事实,您可以使用它来计算True
元素的数量。