【问题标题】:How to print elements of array that start with a particular number?如何打印以特定数字开头的数组元素?
【发布时间】:2018-07-24 09:12:43
【问题描述】:

我有一个 Numpy 数组

a= [[[ 6, -1, -1]],

       [[ 8, -1,  3]],

       [[10,  1,  1]],

       [[10, -1, -1]],

       [[10,  1, -1]]]

我希望只保留那些以 10 开头的行;所以我希望我的输出数组是

a_out= [[[10,  1,  1]],

           [[10, -1, -1]],

           [[10,  1, -1]]]

我正在尝试遍历数组的第一个元素来这样做,但如果我尝试 a[0,0:] 或 a[0:,0] 我会得到整个行或列。

【问题讨论】:

    标签: python python-2.7 numpy multidimensional-array


    【解决方案1】:

    使用布尔掩码:

    >>> arr
    array([[[ 6, -1, -1]],
    
           [[ 8, -1,  3]],
    
           [[10,  1,  1]],
    
           [[10, -1, -1]],
    
           [[10,  1, -1]]])
    >>> mask = arr[:,:,0] == 10
    >>> arr[mask]
    array([[[10,  1,  1]],
    
           [[10, -1, -1]],
    
           [[10,  1, -1]]])
    

    【讨论】:

      【解决方案2】:

      确保您的 a 是一个 numpy 数组而不是 Python 列表。然后你可以使用这个:

      a[a[:,:,0] == 10]
      

      其中内部是一个用于选择行的布尔列表。

      【讨论】:

        【解决方案3】:

        如果它是一个列表而不是一个数组,你可以这样做:

        filter(lambda x: x[0][0] == 10, a)
        

        【讨论】:

        • 我看出来了,不过他发的不是数组
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2020-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        相关资源
        最近更新 更多