如何使用Python在数组中查找满足两个条件的值

时间:2010-07-14 16:55:55

标签: python find numpy

我有一个数组

a=[1,2,3,4,5,6,7,8,9]

我希望找到满足两个条件的元素s的索引,即

a>3 and a<8
ans=[3,4,5,6]
a[ans]=[4,5,6,7]

我可以使用numpy.nonzero(a>3)numpy.nonzero(a<8) 但不是 numpy.nonzero(a>3 and a<8)给出错误:

ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()

当我尝试使用anyall时,我收到同样的错误。 是否可以结合两个条件测试来获得ans?

3 个答案:

答案 0 :(得分:23)

numpy.nonzero((a > 3) & (a < 8))

&安培;做一个逐元素的布尔值和。

答案 1 :(得分:3)

替代方案(我最终使用的)是numpy.logical_and

choice = numpy.logical_and(np.greater(a, 3), np.less(a, 8))
numpy.extract(choice, a)

答案 2 :(得分:0)

如果你使用numpy数组,你可以直接使用&#39; &&#39;而不是&#39; and&#39;。

a=array([1,2,3,4,5,6,7,8,9])
a[(a>3) & (a<8)]
ans=array([3,4,5,6])