簡體   English   中英

在 Python/Numpy 中獲取滿足條件列表的數組元素數

[英]Get number of elements of array satisfying a list of conditionsin Python/Numpy

我有兩個大小相同的數組 N, array1array2 您基本上可以將其視為形狀為 (N,2) 的單個數組。 條目都是數字。 我有一個條件列表,我想查看有多少條目滿足所有這些條件,最好使用矢量化。 例如,條件可能類似於:

  1. array1 中的元素 > 2
  2. array1 中的元素 < 5
  3. array2 中的元素 > 4
  4. array2 中的元素 < 7
  5. array2 中的元素可被 2 整除

我想計算索引“i”的數量,以便 array1[i] 和 array2[i] 滿足上述所有條件。 例如,如果

array1 = np.array([1,2,3,4,5])
array2 = np.array([3,4,5,6,7])

那么滿足上述條件的唯一索引將是 3,因此滿足約束的索引數量將僅為 1。我正在考慮使用幾個numpy.logical_and ,但這看起來很丑陋。 我不知道是否有一種更簡潔的方法將幾個and語句串在一起。

您可以執行以下操作:

x = np.array(array1>2)
y = np.array(array1<5)
z = np.array(x == y)
sum(z)

最短的方法是使用

np.count_nonzero(
    (array1 > 2) &
    (array1 < 5) &
    (array2 > 4) &
    (array2 < 7) &
    (array2 % 2 == 0)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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