Quantcast
Channel: A fast way to find the largest N elements in an numpy array - Stack Overflow
Viewing all articles
Browse latest Browse all 8

Answer by hennyk for A fast way to find the largest N elements in an numpy array

$
0
0

You can also use numpy's percentile function. In my case it was slightly faster then bottleneck.partsort():

import timeitimport bottleneck as bnN,M,K = 10,1000000,100start = timeit.default_timer()for k in range(K):    a=np.random.uniform(size=M)    tmp=-bn.partsort(-a, N)[:N]stop = timeit.default_timer()print (stop - start)/Kstart = timeit.default_timer()perc = (np.arange(M-N,M)+1.0)/M*100for k in range(K):    a=np.random.uniform(size=M)    tmp=np.percentile(a,perc)stop = timeit.default_timer()print (stop - start)/K

Average time per loop:

  • bottleneck.partsort(): 59 ms
  • np.percentile(): 54 ms

Viewing all articles
Browse latest Browse all 8

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>