Find unique rows in numpy.array

后端 未结 20 2845
独厮守ぢ
独厮守ぢ 2020-11-21 10:57

I need to find unique rows in a numpy.array.

For example:

>>> a # I have
array([[1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 0, 0],
         


        
20条回答
  •  清酒与你
    2020-11-21 11:41

    Based on the answer in this page I have written a function that replicates the capability of MATLAB's unique(input,'rows') function, with the additional feature to accept tolerance for checking the uniqueness. It also returns the indices such that c = data[ia,:] and data = c[ic,:]. Please report if you see any discrepancies or errors.

    def unique_rows(data, prec=5):
        import numpy as np
        d_r = np.fix(data * 10 ** prec) / 10 ** prec + 0.0
        b = np.ascontiguousarray(d_r).view(np.dtype((np.void, d_r.dtype.itemsize * d_r.shape[1])))
        _, ia = np.unique(b, return_index=True)
        _, ic = np.unique(b, return_inverse=True)
        return np.unique(b).view(d_r.dtype).reshape(-1, d_r.shape[1]), ia, ic
    

提交回复
热议问题