Удаление дублирующихся столбцов и строк из двумерного массива NumPy

Я использую двумерный массив форм для хранения пар долгота+широта. В какой-то момент мне нужно объединить два таких 2D массива, а затем удалить все дублирующиеся записи. Я искал функцию, подобную numpy.unique, но мне не повезло. Любая реализация, над которой я выглядит очень "неоптимизированной". Например, я пытаюсь преобразовать массив в список кортежей, удалить дубликаты с помощью set, а затем снова преобразовать в массив:

coordskeys = np.array(list(set([tuple(x) for x in coordskeys])))

Есть ли какие-нибудь существующие решения, чтобы не изобретать велосипед?

Чтобы было понятно, я ищу:

>>> a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
>>> unique_rows(a)
array([[1, 1], [2, 3],[5, 4]])

BTW, я хотел использовать для этого просто список кортежей, но списки были настолько большими, что занимали 4 Гб RAM + 4 Гб swap (массивы numpy более эффективны с точки зрения памяти).

20
задан doug 25 March 2012 в 10:59
поделиться