python中的条件求和

时间:2017-06-08 15:05:23

标签: python numpy

我有一个numpy 2d阵列(8000x7200)。我想计算值大于指定阈值的单元格数。我尝试使用双循环来完成此操作,但这需要花费很多时间。 有没有办法快速执行此计算?

2 个答案:

答案 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元素的数量。