Python 如何将numpy.where与逻辑运算符一起使用

Python 如何将numpy.where与逻辑运算符一起使用,python,numpy,where,logical-operators,Python,Numpy,Where,Logical Operators,我试图找到数组中大于a但小于b的所有元素的索引。可能只是我的语法有问题,但这不起作用: numpy.where((my_array > a) and (my_array < b)) numpy.where((我的数组>a)和(我的数组a)和(my_array

我试图找到数组中大于a但小于b的所有元素的索引。可能只是我的语法有问题,但这不起作用:

numpy.where((my_array > a) and (my_array < b))
numpy.where((我的数组>a)和(我的数组
我该如何解决这个问题?还是有更好的方法

谢谢

这里有两种方法:

In [1]: my_array = arange(10)

In [2]: where((my_array > 3) & (my_array < 7))
Out[2]: (array([4, 5, 6]),)

In [3]: where(logical_and(my_array > 3, my_array < 7))
Out[3]: (array([4, 5, 6]),)

你试过像&而不是and这样的逻辑运算符吗?只是用&替换and不起作用,但我刚刚发现这是有效的:numpy。where((my_array>a)和(my_array替换
不起作用的意义吗?这是解决这个问题的标准方法。我不知道为什么第一次出现错误。现在它确实起作用了。我的错。谢谢,你说“哈奇”是什么意思?为什么它总是返回“(数组([4,5,6]),而不是仅仅返回“数组([4,5,6])”?“元组中没有第二个东西”——返回的东西的语法背后的想法是什么?@usethedeathstar:(1)hacky位是主观的。我想我的问题是(至少对我来说)代码的表面读取与意图不明显匹配。(2) 对于
where
,它返回一个元组,因为在一般情况下
where
对两个
n
-维数组进行操作,并返回结果的
n
-元组;这里您看到的是一个特殊情况,其中
n=1
。元组容器有点难看,但与高维情况不一致可能会更难看。(耶!更具主观性!)既然在本例中,我们得到了一个1D数组,元组的长度为1项,而在2D的情况下,元组中只得到了一个“x-index”数组和一个“y-index”数组,显示了2D数组中的点的x,y坐标,根据您所做的逻辑组合,这些坐标是正确的?@usethedeathstar:是的,没错。呸:“在两个n维数组上操作”应该是上面的“在n维数组上操作”。
In [4]: where((my_array > 3) * (my_array < 7))
Out[4]: (array([4, 5, 6]),)