根据条件删除numpy数组中的行

时间:2017-08-01 02:02:50

标签: python arrays numpy

我有一个2D numpy数组形状[6,2],我想删除含有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)]

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

1 个答案:

答案 0 :(得分:3)

您可以使用布尔索引

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. 使用蒙版索引到原始数组