在阵列满足使用Python
问题描述:
两个条件如何找到值我有一个数组在阵列满足使用Python
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
时,我得到相同的错误。 是否可以结合两个条件测试来获得答案?
答
一种替代(我结束了使用)是numpy.logical_and
:
choice = numpy.logical_and(np.greater(a, 3), np.less(a, 8))
numpy.extract(choice, a)
答
如果使用numpy的阵列,则可以直接使用 '&
' 而不是 'and
'。
a=array([1,2,3,4,5,6,7,8,9]) a[(a>3) & (a<8)] ans=array([3,4,5,6])
为什么你需要numpy,你不能这样做!过滤器(lambda a:3 shahjapan 2010-07-14 17:41:30
@shahjapan - 可能是因为它们需要增加一个numpy数组的速度,因为它们可能真的有很多大得多的数据集。 – 2010-07-14 17:59:36