这不是对another question的重复。当将条件语句应用于numpy数组时,另一个问题询问单个布尔输出(
True/False
)。这就是为什么使用np.any()
或np.all()
明确确定输出的重要性。我的问题是关于在使用以下方法评估数组
True/False
是否在a
和2
之间时,创建布尔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
并获得上述输出?
答案 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]