数字数组多条件布尔值



我希望我的数组通过两个条件。如果我尝试只用一个来做到这一点,我没有任何问题,但如果我会给代码两个条件,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.

最新更新