np.array(list(set(map(tuple, input))))
возвращает
array([[4, 5],
[2, 3],
[1, 1]])
ОБНОВЛЕНИЕ 1: Если вы также хотите удалить [1, 1]
(поскольку оно появляется более одного раза), вы можете сделать:
from collections import Counter
np.array([k for k, v in Counter(map(tuple, input)).iteritems() if v == 1])
возвращает
array([[4, 5],
[2, 3]])
ОБНОВЛЕНИЕ 2: с input=[[1,1,2], [1,1,3], [2,3,4], [4,5,5], [1,1,7]]
:
input=[[1,1,2], [1,1,3], [2,3,4], [4,5,5], [1,1,7]]
d = {}
for a in input:
d.setdefault(tuple(a[:2]), []).append(a[2])
d
сейчас:
{(1, 1): [2, 3, 7],
(2, 3): [4],
(4, 5): [5]}
поэтому мы хотим взять все пары ключ-значение, которые имеют отдельные значения, и воссоздать массивы:
np.array([k+tuple(v) for k,v in d.iteritems() if len(v) == 1])
возвращается:
array([[4, 5, 5],
[2, 3, 4]])
ОБНОВЛЕНИЕ 3: Для больших массивов моё предыдущее решение можно адаптировать к:
import numpy as np
input = [[1,1,3,5,6,6],[1,1,4,4,5,6],[1,3,4,5,6,7],[3,4,6,7,7,6],[1,1,4,6,88,7],[3,3,3,3,3,3],[456,6,5,343,435,5]]
d = {}
for a in input:
d.setdefault(tuple(a[:2]), []).append(a)
np.array([v for v in d.itervalues() if len(v) == 1])
возвращается:
array([[[456, 6, 5, 343, 435, 5]],
[[ 1, 3, 4, 5, 6, 7]],
[[ 3, 4, 6, 7, 7, 6]],
[[ 3, 3, 3, 3, 3, 3]]])