Thanks for the code and for pointing out the issue.  Glad that it's on the 
radar for a future enhancement.  

--Pete

On Monday, August 11, 2014 10:22:45 AM UTC-7, Peter Simon wrote:
>
> Greetings.
>
> I didn't find any built-in function to return the indices for the unique 
> rows in a matrix, so I tried rolling my own.  I looked at, but didn't 
> understand, the highly macro-ized, arbitrary dimensional code in the 
> built-in unique() function.  I did discover hashing, though, from looking 
> at that code.  Here is what I have so far:
>
>  function uniquerowindices2{T}(a::Matrix{T})
>      rowhash = Uint64[hash(a[k,:]) for k = 1:size(a,1)]
>      hu = unique(rowhash)
>      ind = zeros(Int,length(hu))
>      k1 = 1
>      for m = 1:length(ind)
>          for k = k1:length(rowhash)
>              if rowhash[k] == hu[m]
>                  ind[m] = k
>                  k1 = k
>                  break
>              end
>          end
>      end
>      return ind
>  end
>
> This is quite a bit faster than my first effort, where I was comparing 
> rows, rather than row hashes, but I'm betting someone out there has a much 
> better way.  Thanks in advance,
>
> --Peter    
>

Reply via email to