[英]numpy: Counting in a 2D array where an element satisfies a condition
我有一个如下的numpy数组。 我需要计算第一个元素为2的行数。因此,在下面的数组中,四行以2开头-答案是4。如何在numpy中做到最好? (我不能使用熊猫,但可以使用scipy)。
array([[1, 4, 5],
[1, 4, 5],
[2, 4, 5],
[2, 4, 5],
[2, 4, 5],
[2, 4, 5],
[3, 4, 5],
[3, 4, 5],
[3, 4, 5],
[3, 4, 5],
[3, 4, 5],
[3, 4, 5]])
首先,获取第一列,所有行:
a[:,0]
然后,找到2
s:
a[:,0] == 2
那给你一个布尔数组。 然后可以总结一下:
(a[:,0] == 2).sum()
有一个np.count_nonzero
,它在一个常见用法中适用于通过评估条件生成的逻辑数组
np.count_nonzero(data[:, 0] == 2)
顺便说一句。 这可能只是出于示例的目的,但是如果您对数组进行排序的方式也可以使用np.searchsorted
np.diff(np.searchsorted(data[:, 0], (2, 3)))[0]
除上述方法外,还有另一种方法
>>> x[:,0]==2
array([False, False, True, True, True, True, False, False, False,
False, False, False], dtype=bool)
对于第一列为2的行,将为TRUE。
>>> x[x[:,0]==2]
array([[2, 4, 5],
[2, 4, 5],
[2, 4, 5],
[2, 4, 5]])
给您相应的行并满足所需条件。 现在,您可以使用形状函数来获取长度。
x[x[:,0]==2].shape[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.