Вы хотите удалить пиксели, где любое значение равно 0, или только те, где все находятся?
In [212]: arr = np.array([[ 126., 94., 51.],
...: [ 171., 0., 65.],
...: [ 188., 119., 64.],
...: [ 1. , 0., 0.],
...: [ 0. , 0., 0.],
...: [ 0. , 1., 0.]])
...:
...:
In [213]: arr
Out[213]:
array([[126., 94., 51.],
[171., 0., 65.],
[188., 119., 64.],
[ 1., 0., 0.],
[ 0., 0., 0.],
[ 0., 1., 0.]])
In [214]: arr == [0,0,0]
Out[214]:
array([[False, False, False],
[False, True, False],
[False, False, False],
[False, True, True],
[ True, True, True],
[ True, False, True]])
In [215]: np.where(arr == [0,0,0])
Out[215]: (array([1, 3, 3, 4, 4, 4, 5, 5]), array([1, 1, 2, 0, 1, 2, 0, 2]))
Чтобы проверить все в строке:
In [216]: (arr == [0,0,0]).all(axis=1)
Out[216]: array([False, False, False, False, True, False])
In [217]: np.where((arr == [0,0,0]).all(axis=1))
Out[217]: (array([4]),)
In [218]: np.where((arr == [0,0,0]).any(axis=1))
Out[218]: (array([1, 3, 4, 5]),)
Ваши delete
и where
настолько же хороши, насколько и условные внутри where
.