在具有多个条件的numpy数组中查找元素

在具有多个条件的numpy数组中查找元素,numpy,python-3.x,Numpy,Python 3.x,如何在Numpy数组中找到满足多个条件的元素索引 示例:函数numpy.nonzero允许我根据一些标准查找索引: In [1]: from numpy import * In [2]: a = array([1,0,1,-1]) In [5]: nonzero(a != 0) Out[5]: (array([0, 2, 3]),) 但是,给出这样的多个标准是行不通的: In [6]: nonzero((a != 0) and (a < 0)) ---------------------

如何在Numpy数组中找到满足多个条件的元素索引

示例:函数numpy.nonzero允许我根据一些标准查找索引:

In [1]: from numpy import *
In [2]: a = array([1,0,1,-1])
In [5]: nonzero(a != 0)
Out[5]: (array([0, 2, 3]),)
但是,给出这样的多个标准是行不通的:

In [6]: nonzero((a != 0) and (a < 0))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/Users/cls/<ipython-input-6-85fafffc5d1c> in <module>()
----> 1 nonzero((a != 0) and (a < 0))

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
在MATLAB中,可以编写:

find((d != 0) & (d < 0))
如何使用Numpy实现这一点?

IIUC,您可以使用&而不是和:

IIUC,您可以使用&而不是和:


谢谢IIUC是什么意思?谢谢。IIUC是什么意思?
>>> from numpy import *
>>> a = array([1,0,1,-1])
>>> nonzero(a!=0)
(array([0, 2, 3]),)
>>> nonzero((a != 0) and (a < 0))
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()
>>> nonzero((a != 0) & (a < 0))
(array([3]),)
>>> where((a != 0) & (a < 0))
(array([3]),)