[英]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.