【问题标题】:Get number of elements of array satisfying a list of conditionsin Python/Numpy获取满足Python / Numpy中条件列表的数组元素数
【发布时间】:2021-02-15 07:28:44
【问题描述】:

我有两个大小相同的数组 N,array1array2。您基本上可以将其视为具有形状 (N,2) 的单个数组。条目都是数字。我有一个条件列表,我想看看有多少条目满足所有这些条件,最好使用矢量化。例如,条件可能是这样的:

  1. array1 中的元素 > 2
  2. array1 中的元素
  3. array2 中的元素 > 4
  4. array2 中的元素
  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 语句串在一起。

【问题讨论】:

  • 在这种情况下,numpy.logical_and 将是你最好的朋友。即使它不“看起来很漂亮”,它也是最好的解决方案。

标签: python arrays numpy vectorization


【解决方案1】:

您可以执行以下操作:

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

【讨论】:

    【解决方案2】:

    最快的方法是使用

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

    【讨论】:

      猜你喜欢
      • 2011-04-16
      • 1970-01-01
      • 2012-01-14
      • 2022-01-08
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多