[Numpy-discussion] argmax for top N elements
Keith Goodman
kwgoodman at gmail.com
Wed Jun 22 15:18:22 EDT 2011
On Wed, Jun 22, 2011 at 12:08 PM, RadimRehurek <RadimRehurek at seznam.cz> wrote:
>> Date: Wed, 22 Jun 2011 11:30:47 -0400
>> From: Alex Flint <alex.flint at 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])
More information about the NumPy-Discussion
mailing list