我希望我的数组通过两个条件。如果我尝试只用一个来做到这一点,我没有任何问题,但如果我会给代码两个条件,python 崩溃。这是我的代码:
import numpy as np
from collections import deque
queue = deque([], maxlen=10)
queue.appendleft(31)
queue.appendleft(32)
queue.appendleft(33)
cond1 = 35
cond2 = 30
A_1 = np.array(queue)
print(cond2 > A_1 < cond1)
# print(A_1 > 30) # works
# array([ True, True, True], dtype=bool)
print(((cond2 > A_1 < cond1).sum() == A_1.size).astype(np.int))
# print(((A_1 > 30).sum() == A_1.size).astype(np.int)) # works
# 1
下面是一个随机示例:
import numpy as np
np.random.seed(123456)
array = np.array(np.random.randn(12))
print((array < 1) & (array > 0))
numpy 您必须将条件放在括号中,然后将 & 运算符用于 and 条件。对于 或 条件,请使用 |运算符,然后遵循相同的格式。这将为你得到一个布尔值数组。
它应该是像np.logical_and(A_1 < cond1, A_1 > cond2)
如果要检查所有元素是否都满足,只需np.all(np.logical_and(A_1 < cond1, A_1 > cond2))
cond2 > A_1 < cond1
不会按预期工作,因为cond2 > A_1
返回一个布尔数组。将布尔值与不需要的布尔值进行比较cond1
根据您的描述。明确地说,可以使用np.logical_and
.