如何按特定数字过滤 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
适当地广播。
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
适当地广播。