On Wed, Dec 2, 2009 at 7:31 PM, Neal Becker <[email protected]> wrote: > Keith Goodman wrote: > >> On Wed, Dec 2, 2009 at 7:15 PM, Neal Becker <[email protected]> > 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
Nice. _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
