【发布时间】:2020-07-21 04:42:32
【问题描述】:
我有一个二维范围数组和一个我想过滤的关联值列表。我想获取属于每个范围的过滤值的数量。
例如,考虑:
- 范围矩阵
{{0,1},{1,4}}; - 还有值列表
{5,10,16,21}。
假设我过滤了x < 15。这将给出一个过滤后的索引数组{0,1},因为只有 5 和 10 小于 15,并且它们分别落在索引 0 和 1 处。
使用这个过滤后的数组,因为 0 在 [0,1) 范围内,而 1 在 [1,4) 范围内,所以这个函数应该返回 (1,1)。
但是,如果我们过滤 x%5 == 1,过滤后的索引数组将是 {2,3}(因为只有 16 和 21 mod 5 等价于 1,而 16 和 25 分别具有索引 2 和 3)和函数应该返回 (0,2),因为 2 和 3 都大于 1 且小于 4。
我知道如何使用循环来做到这一点,但我也不希望这样做。
我不确定在 NumPy 中实现此功能的最佳方法是什么——我正在考虑使用np.where(),但我不确定具体细节。
另外,不确定这是否是解决此问题的最简单方法:是否有更简单的方法来确定一个范围内有多少过滤值?
【问题讨论】:
-
欢迎来到 Stack Overflow。请拨打tour,阅读what's on-topic,并阅读How to Ask a Good Question。 – 特别是,它有助于展示您当前的方法(代码),然后基于该方法提出特定问题。
-
我很难理解您正在寻找的逻辑。您提到范围(1,3),但您的数据中没有这样的范围。此外,条件(过滤器)、矩阵和结果之间的关系也不清楚。
-
谢谢,我修正了错字并添加了更多解释。希望现在有意义
-
不同的范围是否总是彼此相邻(即下一个从前一个结束的地方开始)?