Как удалить дубликаты строк в массиве?
Дан массив NumPy:
[[1 0 1 0 0 1]
[1 1 1 0 0 1]
[1 0 1 0 0 1]
[1 0 1 0 1 1]
[1 0 1 0 0 1]]
a = [[1, 0, 1, 0, 0, 1],
[1, 1, 1, 0, 0, 1],
[1, 0, 1, 0, 0, 1],
[1, 0, 1, 0, 1, 1],
[1, 0, 1, 0, 0, 1]]
b = np.array(a)
Как можно удалить дубликаты строк? То есть, на выходе должно получится:
[[1 0 1 0 0 1]
[1 1 1 0 0 1]
[1 0 1 0 1 1]]
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
воспользуйтесь np.unique(arr, axis=0):
In [23]: np.unique(b, axis=0)
Out[23]:
array([[1, 0, 1, 0, 0, 1],
[1, 0, 1, 0, 1, 1],
[1, 1, 1, 0, 0, 1]])
если нужно сохранить порядок строк:
u, idx = np.unique(b, axis=0, return_index=True)
res = u[idx.argsort()]
результат:
In [33]: res
Out[33]:
array([[1, 0, 1, 0, 0, 1],
[1, 1, 1, 0, 0, 1],
[1, 0, 1, 0, 1, 1]])