根据具有上限和下限的另一个数组中的值选择数组的子集

时间:2016-11-08 16:08:53

标签: python arrays python-2.7 numpy

我有两个数组,我想根据另一个数据的值选择其中一个数据的一部分。我知道如何在几行中做到这一点,但我想知道在一行中是否有更简洁的方法来做到这一点。这就是我这样做的漫长而丑陋的方式。

lower = some_value; upper = another_value
a = [some numpy array]; b = [another numpy array]
b_select = []
for i in range(len(a)):
    if a[i] < lower or a[i] > upper:
        b_select.append(b[i])

基本上我的问题是,我可以在一行中获得b_select,而不是最后4行吗?

非常感谢任何建议。有关信息,我在Python 2.7中这样做。

2 个答案:

答案 0 :(得分:7)

所述问题是要选择超出下限和上限设定范围的值。要解决此问题,我们可以使用boolean indexing -

b[(a < lower) | (a > upper)]

在下限和上限内选择的另一个场景,反转过程 -

b[(a > lower) & (a < upper)]

要在边界上具有包容性,请将<替换为<=,将>替换为>=

答案 1 :(得分:0)

除非numpy有一些奇怪的数组,否则这应该有效:

b_select = [x for x in a if (x < lower or x > upper)]