如何按特定数字过滤 numpy.ndarray?

how to filter an numpy.ndarray by a spevific number?

roi_pixel_img = crop_img[indices_list]
print (roi_pixel_img)

当我添加(我只使用整个数组(意思只是一部分))时:

np.set_printoptions(threshold=sys.maxsize)

第一个输出是:

整个部分发生在一个while循环中,因为我在这部分提取像素,这与问题无关。

我的目标是不在这个数组中包含带有 [0 255 255] 的行,我该怎么做?

roi_pixel_img 的类型是 numpy.ndarray。

是否可以在没有示例代码的情况下回答这个问题?

您可以通过创建索引数组来做到这一点:

r = (roi_pixel_img == [0,255,255]).all(axis = -1)

roi_pixel_img[~r]

roi_pixel_img == [0,255,255] 语句将生成一个与 roi_pixel_img 具有相同形状的数组(例如 (N, 3))并将比较 element-wise,例如 [0,255,0]将导致 [True, True, False]。使用 .all(axis = -1) 将沿最后一个轴减少(在本例中 axis = 1 将产生相同的结果)并且如果所有元素匹配将导致 True 。所以 r 将具有 (N, ).

的形状

使用 ~r 索引将排除匹配像素,并且由于形状将由 numpy 适当地广播。