numpy masking不适用于双方有界范围[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

假设我们有:

>>> 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()

我知道它所做的就是在做这些不等式操作时创建一个TrueFalses的掩码,所以我可以做到以下几点:

>>> x[(-1 <= x) * (x <= 1)]
array([-1. ,  0. ,  0.2])

作为布尔人的广播业务。这不是太不方便,但为什么以前的范围不平等不起作用?

python numpy
1个回答
1
投票

虽然常规的Python类型支持像1 < x < 5这样的“链式比较”,但NumPy数组却不支持。也许这很不幸,但你可以轻松地解决它:

x[(-1 <= x) & (x <= 1)]
© www.soinside.com 2019 - 2024. All rights reserved.