From 89dbb4dccb93af5ebbfb669474b06d5bc14731be Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Mon, 5 Aug 2013 09:26:36 +1000 Subject: [PATCH] Add unique_rows function --- skimage/util/unique.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 skimage/util/unique.py diff --git a/skimage/util/unique.py b/skimage/util/unique.py new file mode 100644 index 00000000..a09fadd9 --- /dev/null +++ b/skimage/util/unique.py @@ -0,0 +1,36 @@ +import numpy as np + + +def unique_rows(ar): + """Remove repeated rows from a 2D array. + + Parameters + ---------- + ar : 2D np.ndarray + The input array. + + Returns + ------- + ar_out : 2D np.ndarray + A copy of the input array with repeated rows removed. + + Raises + ------ + ValueError : if `ar` is not two-dimensional. + + Examples + -------- + >>> ar = np.array([[1, 0, 1], + [0, 1, 0], + [1, 0, 1]], np.uint8) + >>> aru = unique_rows(ar) + array([[0, 1, 0], + [1, 0, 1]], dtype=uint8) + """ + if ar.ndim != 2: + raise ValueError("unique_rows() only makes sense for 2D arrays, " + "got %dd" % ar.ndim) + ar_row_view = ar.view('|S%d' % (ar.itemsize * ar.shape[1])) + _, unique_row_indices = np.unique(ar_row_view, return_index=True) + ar_out = ar[unique_row_indices] + return ar_out