簡體   English   中英

numpy:計算元素滿足條件的2D數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM