numpy:计算元素满足条件的2D数组

时间:2017-02-19 05:44:27

标签: python arrays numpy count

我有一个像下面那样的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]])

3 个答案:

答案 0 :(得分:4)

首先,取第一列,所有行:

a[:,0]

然后,找到2 s:

a[:,0] == 2

这会给你一个布尔数组。然后你可以总结:

(a[:,0] == 2).sum()

答案 1 :(得分:2)

np.count_nonzero中的np.count_nonzero(data[:, 0] == 2) 应用于通过评估条件生成的逻辑数组

np.searchsorted

顺便说一下。它可能仅仅是为了示例,但如果您的数组像您的一样排序,您也可以使用np.diff(np.searchsorted(data[:, 0], (2, 3)))[0]

#!/usr/bin/env python

print('hello, world!')

答案 2 :(得分: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]