我有一个数组
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()
当我尝试使用any
或all
时,我收到同样的错误。
是否可以结合两个条件测试来获得ans?
答案 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])