【发布时间】:2018-11-06 01:49:09
【问题描述】:
我希望我的数组通过两个条件。如果我尝试只用一个来做到这一点,我没有任何问题,但如果我给代码两个条件,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
【问题讨论】:
-
Numpy 不支持速记运算符。请像这样明确说明它们:
(cond2 > A_1) & (A_1 < cond1) -
另外,我不明白第二个条件在做什么,但它看起来不正确。
-
我明白这一点,但我不明白
((cond2 > A_1 < cond1).sum() == A_1.size).astype(np.int)想要做什么。 -
哦,好吧,这很有道理。无论如何,我的第一条评论中的解决方案应该可以工作,以防你还没有看到它。
-
嗯,是的,你把它改了:
(cond1 > A_1) & (A_1 < cond2)... 现在更有意义了吗?
标签: python arrays python-3.x numpy boolean