# [Numpy-discussion] Find the N maximum values and corresponding indexes in an array

Neal Becker ndbecker2@gmail....
Wed Dec 2 21:31:46 CST 2009

```Keith Goodman wrote:

> On Wed, Dec 2, 2009 at 7:15 PM, Neal Becker <ndbecker2@gmail.com>
wrote:
>> Neal Becker wrote:
>>
>>> Keith Goodman wrote:
>>> ...
>>>> Oh, I thought he meant there was a numpy function for partial
>> sorting.
>>>>
>>> Actually, I do use this myself.  My code is a boost::python
wrapper
>> or
>>> the std::partial_sum using pyublas.  Here's the main pieces:
>>>
>>> template<typename out_t, typename in_t>
>>> inline out_t partial_sum (in_t const& in) {
>>> out_t out (boost::size (in));
>>> std::partial_sum (boost::begin (in), boost::end (in), boost::begin
>>> (out));
>>> return out;
>>> }
>>> ...
>>> def ("partial_sum",
>>>
>>
&partial_sum<pyublas::numpy_vector<T>,pyublas::numpy_strided_vector<T>
>>>>);
>>
>> Oops, sorry, that's the wrong one (that was partial_sum, not
>> partial_sort).  I don't have a wrapper for that one, but it would
>> probably be easy enough to do with the same tools as above.
>
> Is a partial sum a cumsum? How does the speed of your code above
> compare to numpy's cumsum?
>
>>> y = np.random.rand(250000)
>>> timeit y.cumsum()
> 1000 loops, best of 3: 1.05 ms per loop
timeit y.cumsum()
1000 loops, best of 3: 1.08 ms per loop
from numpy_fncs import partial_sum
: timeit partial_sum(y)
1000 loops, best of 3: 554 us per loop

```