Сначала создайте образец массива:
>>> import numpy as np
>>> x = [[1, 1, 2, 0],
... [3, 3, 2, 1],
... [3, 1, 1, 0],
... [0, 1, 2, 3],
... [3, 1, 1, 0]]
Затем создать вид массива, где каждая строка представляет собой один элемент:
>>> y = x.view([('', x.dtype)] * x.shape[1])
>>> y
array([[(1, 1, 2, 0)],
[(3, 3, 2, 1)],
[(3, 1, 1, 0)],
[(0, 1, 2, 3)],
[(3, 1, 1, 0)]],
dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', '<i8'), ('f3', '<i8')])
Проделайте то же самое с элементом, который необходимо найти :
>>> e = np.array([[3, 1, 1, 0]])
>>> tofind = e.view([('', e.dtype)] * e.shape[1])
И теперь вы можете искать элемент:
>>> y == tofind[0]
array([[False],
[False],
[ True],
[False],
[ True]], dtype=bool)
Есть много способов сделать это, в том числе наиболее очевидно тривиальный линейный поиск - настолько тривиальным я подозреваю, что никто не просил бы здесь. Я подозреваю, что это не совсем то, что вы ищете? Это больше о поиске дубликатов в общем случае? – marko