繁体   English   中英

python中的条件求和

[英]Conditional summation in python

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

假设您的变量定义为

np.random.seed([3,1415])
a = np.random.rand(8000, 7200)
threshold = .5

然后使用sum
* (a > threshold)是一个布尔数组,表示单元格的每个实例都大于某个threshold 由于布尔值是int的子类, False为0, True为1,因此我们可以很容易地将它们相加。 numpy s sum默认为整个数组的sum

(a > threshold).sum()
28798689

你最好的选择可能是像np.count_nonzero(x > threshold) ,其中x是你的2-d数组。

顾名思义, count_nonzero计算非零元素的数量。 通过利用True为1-ish的事实,您可以使用它来计算True的元素数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM