Python 如何返回numpy数组中两个数字之间的值索引

Python 如何返回numpy数组中两个数字之间的值索引,python,numpy,Python,Numpy,我想返回python numpy数组中两个值之间的所有值的索引。这是我的密码: INELIPSEINDFAR=np.argwhere(excessPathLen*2>A=2*np.arange(10) 数组([0,2,4,6,8,10,12,14,16,18]) >>>idx=(A>2)*(A>>np.where(idx) 数组([2,3]) 您可以使用括号和正确的操作组合多个布尔表达式: In [1]: import numpy as np In [2]: A = 2*np.arange(1

我想返回python numpy数组中两个值之间的所有值的索引。这是我的密码:

INELIPSEINDFAR=np.argwhere(excessPathLen*2

但它返回一个错误:

inEllipseIndFar  = np.argwhere((excessPathLen * 2 < ePL < excessPathLen * 3).all())
ValueError: The truth value of an array with more than one element is ambiguous. Use 
a.any() or a.all()
INELIPSEINDFAR=np.argwhere((excessPathLen*2

我想知道是否有一种方法可以在不遍历数组的情况下执行此操作。谢谢

由于
<=/code>返回掩码数组,您可以将它们相乘以获得所需的效果(基本上是逻辑AND):

>>将numpy作为np导入
>>>A=2*np.arange(10)
数组([0,2,4,6,8,10,12,14,16,18])
>>>idx=(A>2)*(A>>np.where(idx)
数组([2,3])

您可以使用括号和正确的操作组合多个布尔表达式:

In [1]: import numpy as np

In [2]: A = 2*np.arange(10)

In [3]: np.where((A > 2) & (A < 8))
Out[3]: (array([2, 3]),)

出于好奇,
True/False
数组的乘法和逻辑连词之间有什么区别吗?@Hooked-不是真的,但我发现复合逻辑语句更易于阅读旧注释,但对未来的读者来说:我对这两个(逻辑和乘法)都进行了计时,差异似乎可以忽略不计。
In [1]: import numpy as np

In [2]: A = 2*np.arange(10)

In [3]: np.where((A > 2) & (A < 8))
Out[3]: (array([2, 3]),)
In [4]: idx = np.where((A > 2) & (A < 8))

In [5]: A[idx]
Out[5]: array([4, 6])