【问题标题】:Deleting row in numpy array based on condition根据条件删除numpy数组中的行
【发布时间】:2017-08-01 02:02:49
【问题描述】:

我有一个形状为 [6,2] 的二维 numpy 数组,我想删除第三个元素包含 0 的子数组。

array([[0, 2, 1], #Input
       [0, 1, 1],
       [1, 1, 0],
       [1, 0, 2],
       [0, 2, 0],
       [2, 1, 2]])

array([[0, 2, 1], #Output
       [0, 1, 1],
       [1, 0, 2],
       [2, 1, 2]]) 

我的代码是positives = gt_boxes[np.where(gt_boxes[range(gt_boxes.shape[0]),2] != 0)]

它有效,但有简化的方法吗?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用布尔索引

    In [413]: x[x[:, -1] != 0]
    Out[413]: 
    array([[0, 2, 1],
           [0, 1, 1],
           [1, 0, 2],
           [2, 1, 2]])
    

    1. x[:, -1] 将检索最后一列

    2. x[:, -1] != 0 返回一个布尔掩码

    3. 使用掩码索引到原始数组中

    【讨论】:

    • 该死。我没有写完我的解决方案,而且它仍然比这更长。 +1
    • @ChristianDean Yo 这就是我在这个标签中 99% 的感觉:p
    猜你喜欢
    • 2018-05-28
    • 1970-01-01
    • 2020-11-27
    • 2020-09-06
    • 1970-01-01
    • 2021-10-14
    • 2022-10-14
    • 2018-03-03
    相关资源
    最近更新 更多