"2 < < 5"的 numpy 等价物是多少,其中"a"是一个 numpy 数组?



这个问题不是另一个问题的重复。另一个问题询问在numpy数组上应用条件语句时的单个布尔输出(True/False(。这就是为什么使用np.any()np.all()来明确地确定输出是很重要的。

当我们使用表达式2 < a < 5评估数组a是否在25之间时,我在这里的问题涉及创建布尔True/False值的逐元素数组输出。这个问题深入探讨了在使用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并得到上面的输出?

这个怎么样?

import numpy as np
a = np.arange(10)
bools = map(lambda x: 2 < x < 5, a)
bools = np.fromiter(bools, bool)
suba = a[bools]

最新更新