我有一个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)]
它有效,但有一个简化的方法吗?
答案 0 :(得分:3)
您可以使用布尔索引。
In [413]: x[x[:, -1] != 0]
Out[413]:
array([[0, 2, 1],
[0, 1, 1],
[1, 0, 2],
[2, 1, 2]])
x[:, -1]
将检索最后一列
x[:, -1] != 0
返回一个布尔掩码
使用蒙版索引到原始数组