Python numpy:在二维数组中,当一个元素满足某个条件时进行计数
我有一个numpy数组,如下所示。我需要第一个元素为2的行数。在下面的数组中,四行以2开头-答案是4。如何在numpy最好地实现这一点?(我不能使用熊猫,但可以使用scipy)Python numpy:在二维数组中,当一个元素满足某个条件时进行计数,python,arrays,numpy,count,Python,Arrays,Numpy,Count,我有一个numpy数组,如下所示。我需要第一个元素为2的行数。在下面的数组中,四行以2开头-答案是4。如何在numpy最好地实现这一点?(我不能使用熊猫,但可以使用scipy) 有一个np.count\u nonzero,在一个常见的习惯用法中,它应用于通过计算条件生成的逻辑数组 np.count_nonzero(data[:, 0] == 2) 顺便说一句,这可能只是为了举例,但是如果你的数组像你的一样排序,你也可以使用np.searchsorted np.diff(np.searchsor
有一个
np.count\u nonzero
,在一个常见的习惯用法中,它应用于通过计算条件生成的逻辑数组
np.count_nonzero(data[:, 0] == 2)
顺便说一句,这可能只是为了举例,但是如果你的数组像你的一样排序,你也可以使用np.searchsorted
np.diff(np.searchsorted(data[:, 0], (2, 3)))[0]
有一个
np.count\u nonzero
,在一个常见的习惯用法中,它应用于通过计算条件生成的逻辑数组
np.count_nonzero(data[:, 0] == 2)
顺便说一句,这可能只是为了举例,但是如果你的数组像你的一样排序,你也可以使用np.searchsorted
np.diff(np.searchsorted(data[:, 0], (2, 3)))[0]
首先,取第一列,所有行:
a[:,0]
然后,找到2
s:
a[:,0] == 2
这将为您提供一个布尔数组。然后,您可以对其求和:
(a[:,0] == 2).sum()
首先,取第一列,所有行:
a[:,0]
然后,找到2
s:
a[:,0] == 2
这将为您提供一个布尔数组。然后,您可以对其求和:
(a[:,0] == 2).sum()
除上述方法外,还有一种方法
>>> 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]
除上述方法外,还有一种方法
>>> 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]