代码之家  ›  专栏  ›  技术社区  ›  Sam

使用关系运算符元素对numpy数组的多个索引进行操作

  •  0
  • Sam  · 技术社区  · 5 年前

    我知道我可以在数组中使用关系运算符来获得一个新的布尔值数组。下面的示例生成一个布尔数组,其形状与原始数组相同,但是 True 如果同一索引处的项大于0且 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


    我想不做任何循环

    2 回复  |  直到 5 年前
        1
  •  1
  •   Vishnudev Krishnadas    5 年前

    简单使用 logical_and

    它将按“逻辑”元素计算。

    np.logical_and(a[:,0] > 0, a[:,1] > 0)
    
        2
  •  -1
  •   mermaldad    5 年前

    不完全是循环:

    [b[0] > 0 and b[1] > 0 for b in a]