每行使用numpy计数满足特定条件的元素数

时间:2020-07-23 14:10:53

标签: python arrays numpy

我正在尝试通过以下方式处理一些数据:

我有一个2D范围边界数组和一个我想过滤的关联值列表。我想获取属于每个范围的过滤值的数量。

例如,考虑:

范围矩阵{{0,1},{1,4}}; 以及值列表{5,10,16,5}

每个边界对都有一个不同的过滤器。对于此示例,假定第一个边界对的过滤器为x ==5。这将给出索引为{0,3}的过滤后的数组,因为只有第0和第3个索引的值为5。使用此过滤后的数组,因为0落在[0,1)范围内,而3落在[1,4)范围内,但是此预测仅适用于第一个范围,我们要为[0,1)范围存储1。

接下来,如果我们为第二个范围过滤x == 10,则过滤后的索引数组将为{1}(因为10在索引1处)。由于1不在第二个范围内,因此我们要为[1,4)范围存储0。

最终结果将是(1,0);换句话说,每个范围内满足条件的值的数量。

我不确定在NumPy中实现此目标的最佳方法是什么-我认为使用np.histogram()会有所帮助,但是我不确定如何在多个条件下应用它。使用np.argwhere(),我可以获取映射。对于上面的示例,我得到了

{{0,0},
{0,3},
{1,1}}

其中第一列代表条件所属范围矩阵的行的索引,第二列代表满足条件的值列表中的索引。

numpy中是否有一个对场景有帮助的函数?

0 个答案:

没有答案