这个问题在这里已有答案:
假设我们有:
>>> x
array([-1. , -1.3, 0. , 1.3, 0.2])
我们可以选择具有范围的选择元素:
>>> x[x <= 1]
array([-1. , -1.3, 0. , 0.2])
我们也可以将它绑定在下面:
>>> x[-1 <= x]
array([-1. , 0. , 1.3, 0.2])
是否有一些理由不能使用以下内容:
>>> x[-1 <= x <= 1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我知道它所做的就是在做这些不等式操作时创建一个True
和False
s的掩码,所以我可以做到以下几点:
>>> x[(-1 <= x) * (x <= 1)]
array([-1. , 0. , 0.2])
作为布尔人的广播业务。这不是太不方便,但为什么以前的范围不平等不起作用?
虽然常规的Python类型支持像1 < x < 5
这样的“链式比较”,但NumPy数组却不支持。也许这很不幸,但你可以轻松地解决它:
x[(-1 <= x) & (x <= 1)]