什么是“ 2 <a <5”的numpy等效项,其中“ a”是一个numpy数组?

时间:2019-11-06 22:18:27

标签: python python-3.x numpy conditional-statements

  

这不是对another question的重复。当将条件语句应用于numpy数组时,另一个问题询问单个布尔输出(True/False)。这就是为什么使用np.any()np.all()明确确定输出的重要性。

     

我的问题是关于在使用以下方法评估数组True/False是否在a2之间时,创建布尔5值的元素级数组输出的问题表达式2 < a < 5。这个问题探讨了在使用numpy数组时这种便利表达式的可行性。

Python允许将以下内容用作标量。

a = 7
print(2 < a < 5) # False
a = 4
print(2 < a < 5) # True

但是,如果我对numpy数组尝试相同的操作,将无法正常工作。

import numpy as np

a = np.arange(10)
2 < a < 5

这会给出错误。但是,以下两种方法中的任何一种都可以正常工作(按预期方式):

np.logical_and(2 < a, a < 5) # method-1

(2 < a) & (a < 5) # method-2

输出

array([False, False, False,  True,  True, False, False, False, False,
       False])

所以,我的问题是:是否有任何等效的numpy,这样您就可以编写2 < a < 5并获得上述输出?

1 个答案:

答案 0 :(得分:2)

那呢?

import numpy as np
a = np.arange(10)

bools = map(lambda x: 2 < x < 5, a)
bools = np.fromiter(bools, bool)

suba = a[bools]