Я использую чистое решение (я добавил еще одну строку, чтобы сделать его более общим):
Допустим, это наши данные:
data = np.array(data).astype(str)
data: array([['Name', '=', 'John'],
['Age', '_', '32'],
['Weight', '=', '60'],
['Name', '=', 'John'],
['Weight', '=', '60'],
['TT', '=', 'EE']], dtype='<U6')
Следующий шаг - захват уникальных строк:
uniq = np.unique(data, axis=0)
uniq: array([['Age', '_', '32'],
['Name', '=', 'John'],
['TT', '=', 'EE'],
['Weight', '=', '60']], dtype='<U6')
Теперь мы хотим увидеть, какие строки не повторяются более одного раза:
(Ответ только для однократных строк:)
only_once = np.array([row for row in uniq if sum(np.all(row==data, axis=1)) == 1])
only_once:
array([['Age', '_', '32'],
['TT', '=', 'EE']], dtype='<U6')
Чтобы получить повторные индексы:
idx = []
for row in only_once:
lst = np.all(data==row, axis=1)
idx = np.where(lst)[0]
idx.append(idx)
idx:
[array([1]), array([5])]
Матрица только повторяющихся значений:
result = np.delete(data, idx, axis=0)
result:
array([['Name', '=', 'John'],
['Weight', '=', '60'],
['Name', '=', 'John'],
['Weight', '=', '60']], dtype='<U6')