On Wed, Jun 22, 2011 at 12:08 PM, RadimRehurek <radimrehu...@seznam.cz> wrote:
>> Date: Wed, 22 Jun 2011 11:30:47 -0400
>> From: Alex Flint <alex.fl...@gmail.com>
>> Subject: [Numpy-discussion] argmax for top N elements
>>
>> Is it possible to use argmax or something similar to find the locations of
>> the largest N elements in a matrix?
>
> I would also be interested in an O(N) argmax/argmin for indices of top k 
> values in an array. I'm currently using argsort[:k] in a performance 
> sensitive part and it's not ideal.
>

You can try argpartsort from the bottleneck package:

        >> a = np.random.rand(100000)
        >> k = 10
        >> timeit a.argsort()[:k]
        100 loops, best of 3: 11.2 ms per loop
        >> import bottleneck as bn
        >> timeit bn.argpartsort(a, k)[:k]
        1000 loops, best of 3: 1.29 ms per loop

Output of argpartsort is not ordered:

        >> a.argsort()[:k]
           array([97239, 21091, 25130, 41638, 62323, 57419,  4381, 34905,
94572, 25935])
        >> bn.argpartsort(a, k)[:k]
           array([21091, 62323, 25130, 97239, 41638, 57419,  4381, 34905,
94572, 25935])
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to