【问题标题】:Selecting a subset of an array based on values in another array with upper and lower bounds根据具有上限和下限的另一个数组中的值选择数组的子集
【发布时间】:2017-03-22 08:27:32
【问题描述】:

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

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 中执行此操作。

【问题讨论】:

    标签: python arrays python-2.7 numpy


    【解决方案1】:

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

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

    在上下界内选择的另一种场景,反转过程-

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

    要在界限上具有包容性,请将&lt; 替换为&lt;=,将&gt; 替换为&gt;=

    【讨论】:

      【解决方案2】:

      除非 numpy 有一些奇怪的数组,否则这应该可以工作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-17
        • 2021-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多