我知道我可以在数组上使用关系运算符来获得一个新的布尔值数组。下面的示例生成一个布尔数组,该数组的形状与原始数组相同,但如果同一索引处的项大于0,则具有True
值,否则为False
值。
>>> a = np. array ([ [0 , -2 ,5] , [ -1 , -8 , -12] ,[2 , 4, -9] ])
>>> z = a > 0
>>> print (a)
[[ 0 2 5]
[ 1 -8 -12]
[ 2 4 -9]]
>>> print (z)
[[ False True True ]
[ True False False ]
[ True True False ]]
我想知道的是,是否有一种方法可以同时比较多个索引,以检查是否有两个或多个值大于0。例如,一行将检查每一行,以查看第一个元素和第二个元素是否大于0。一些看起来像的东西
z = a[:,0] > 0 and a[:,1] > 0
并将产生结果
array([False, False, True])
因为a[0,1]=True,但a[0,0]=False,a[1,0]=True但a[0,1]=False,并且a[2,0]和a[0,2]都为True,因此第一行返回False,第二行返回False和第三行返回True
我想在没有循环的情况下完成所有这些
只需使用logical_and
它将计算"逻辑&"元素方面。
np.logical_and(a[:,0] > 0, a[:,1] > 0)
不完全是一个循环:
[b[0] > 0 and b[1] > 0 for b in a]