Re: [Numpy-discussion] quantile() or percentile()
Any way I can help expedite this? On Fri, Jul 21, 2017 at 4:42 PM, Chun-Wei Yuan wrote: > That would be great. I just used np.argsort because it was familiar to > me. Didn't know about the C code. > > On Fri, Jul 21, 2017 at 3:43 PM, Joseph Fox-Rabinovitz < > jfoxrabinov...@gmail.com> wrote: > >> While #9211 is a good start, it is pretty inefficient in terms of the >> fact that it performs an O(nlogn) sort of the array. It is possible to >> reduce the time to O(n) by using a similar partitioning algorithm to the >> one in the C code of percentile. I will look into it as soon as I can. >> >> -Joe >> >> On Fri, Jul 21, 2017 at 5:34 PM, Chun-Wei Yuan >> wrote: >> >>> Just to provide some context, 9213 actually spawned off of this guy: >>> >>> https://github.com/numpy/numpy/pull/9211 >>> >>> which might address the weighted inputs issue Joe brought up. >>> >>> C >>> >>> On Fri, Jul 21, 2017 at 2:21 PM, Joseph Fox-Rabinovitz < >>> jfoxrabinov...@gmail.com> wrote: >>> I think that there would be a very good reason to have a separate function if we were to introduce weights to the inputs, similarly to the way that we have mean and average. This would have some (positive) repercussions like making weighted histograms with the Freedman-Diaconis binwidth estimator a possibility. I have had this change on the back-burner for a long time, mainly because I was too lazy to figure out how to include it in the C code. However, I will take a closer look. Regards, -Joe On Fri, Jul 21, 2017 at 5:11 PM, Chun-Wei Yuan wrote: > There's an ongoing effort to introduce quantile() into numpy. You'd > use it just like percentile(), but would input your q value in probability > space (0.5 for 50%): > > https://github.com/numpy/numpy/pull/9213 > > Since there's a great deal of overlap between these two functions, > we'd like to solicit opinions on how to move forward on this. > > The current thinking is to tolerate the redundancy and keep both, > using one as the engine for the other. I'm partial to having quantile > because 1.) I prefer probability space, and 2.) I have a PR waiting on > quantile(). > > Best, > > C > > ___ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > > ___ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion >>> >>> ___ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@python.org >>> https://mail.python.org/mailman/listinfo/numpy-discussion >>> >>> >> >> ___ >> NumPy-Discussion mailing list >> NumPy-Discussion@python.org >> https://mail.python.org/mailman/listinfo/numpy-discussion >> >> > ___ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] quantile() or percentile()
Not that I know of. The algorithm is very simple, requiring a relatively small addition to the current introselect algorithm used for `np.partition`. My biggest hurdle is figuring out how the calling machinery really works so that I can figure out which input type permutations I need to generate, and how to get the right backend running for a given function call. -Joe On Thu, Aug 3, 2017 at 1:00 PM, Chun-Wei Yuan wrote: > Any way I can help expedite this? > > On Fri, Jul 21, 2017 at 4:42 PM, Chun-Wei Yuan > wrote: >> >> That would be great. I just used np.argsort because it was familiar to >> me. Didn't know about the C code. >> >> On Fri, Jul 21, 2017 at 3:43 PM, Joseph Fox-Rabinovitz >> wrote: >>> >>> While #9211 is a good start, it is pretty inefficient in terms of the >>> fact that it performs an O(nlogn) sort of the array. It is possible to >>> reduce the time to O(n) by using a similar partitioning algorithm to the one >>> in the C code of percentile. I will look into it as soon as I can. >>> >>> -Joe >>> >>> On Fri, Jul 21, 2017 at 5:34 PM, Chun-Wei Yuan >>> wrote: Just to provide some context, 9213 actually spawned off of this guy: https://github.com/numpy/numpy/pull/9211 which might address the weighted inputs issue Joe brought up. C On Fri, Jul 21, 2017 at 2:21 PM, Joseph Fox-Rabinovitz wrote: > > I think that there would be a very good reason to have a separate > function if we were to introduce weights to the inputs, similarly to the > way > that we have mean and average. This would have some (positive) > repercussions > like making weighted histograms with the Freedman-Diaconis binwidth > estimator a possibility. I have had this change on the back-burner for a > long time, mainly because I was too lazy to figure out how to include it > in > the C code. However, I will take a closer look. > > Regards, > > -Joe > > > > On Fri, Jul 21, 2017 at 5:11 PM, Chun-Wei Yuan > wrote: >> >> There's an ongoing effort to introduce quantile() into numpy. You'd >> use it just like percentile(), but would input your q value in >> probability >> space (0.5 for 50%): >> >> https://github.com/numpy/numpy/pull/9213 >> >> Since there's a great deal of overlap between these two functions, >> we'd like to solicit opinions on how to move forward on this. >> >> The current thinking is to tolerate the redundancy and keep both, >> using one as the engine for the other. I'm partial to having quantile >> because 1.) I prefer probability space, and 2.) I have a PR waiting on >> quantile(). >> >> Best, >> >> C >> >> ___ >> NumPy-Discussion mailing list >> NumPy-Discussion@python.org >> https://mail.python.org/mailman/listinfo/numpy-discussion >> > > > ___ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > ___ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion >>> >>> >>> ___ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@python.org >>> https://mail.python.org/mailman/listinfo/numpy-discussion >>> >> > > > ___ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > ___ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] quantile() or percentile()
Cool. Just as a heads up, for my algorithm to work, I actually need the indices, which is why argsort() is so important to me. I use it to get both ap_sorted and ws_sorted variables. If your weighted-quantile algo is faster and doesn't require those indices, please by all means change my implementation. Thanks. On Thu, Aug 3, 2017 at 11:10 AM, Joseph Fox-Rabinovitz < jfoxrabinov...@gmail.com> wrote: > Not that I know of. The algorithm is very simple, requiring a > relatively small addition to the current introselect algorithm used > for `np.partition`. My biggest hurdle is figuring out how the calling > machinery really works so that I can figure out which input type > permutations I need to generate, and how to get the right backend > running for a given function call. > > -Joe > > On Thu, Aug 3, 2017 at 1:00 PM, Chun-Wei Yuan > wrote: > > Any way I can help expedite this? > > > > On Fri, Jul 21, 2017 at 4:42 PM, Chun-Wei Yuan > > wrote: > >> > >> That would be great. I just used np.argsort because it was familiar to > >> me. Didn't know about the C code. > >> > >> On Fri, Jul 21, 2017 at 3:43 PM, Joseph Fox-Rabinovitz > >> wrote: > >>> > >>> While #9211 is a good start, it is pretty inefficient in terms of the > >>> fact that it performs an O(nlogn) sort of the array. It is possible to > >>> reduce the time to O(n) by using a similar partitioning algorithm to > the one > >>> in the C code of percentile. I will look into it as soon as I can. > >>> > >>> -Joe > >>> > >>> On Fri, Jul 21, 2017 at 5:34 PM, Chun-Wei Yuan > > >>> wrote: > > Just to provide some context, 9213 actually spawned off of this guy: > > https://github.com/numpy/numpy/pull/9211 > > which might address the weighted inputs issue Joe brought up. > > C > > On Fri, Jul 21, 2017 at 2:21 PM, Joseph Fox-Rabinovitz > wrote: > > > > I think that there would be a very good reason to have a separate > > function if we were to introduce weights to the inputs, similarly to > the way > > that we have mean and average. This would have some (positive) > repercussions > > like making weighted histograms with the Freedman-Diaconis binwidth > > estimator a possibility. I have had this change on the back-burner > for a > > long time, mainly because I was too lazy to figure out how to > include it in > > the C code. However, I will take a closer look. > > > > Regards, > > > > -Joe > > > > > > > > On Fri, Jul 21, 2017 at 5:11 PM, Chun-Wei Yuan < > chunwei.y...@gmail.com> > > wrote: > >> > >> There's an ongoing effort to introduce quantile() into numpy. You'd > >> use it just like percentile(), but would input your q value in > probability > >> space (0.5 for 50%): > >> > >> https://github.com/numpy/numpy/pull/9213 > >> > >> Since there's a great deal of overlap between these two functions, > >> we'd like to solicit opinions on how to move forward on this. > >> > >> The current thinking is to tolerate the redundancy and keep both, > >> using one as the engine for the other. I'm partial to having > quantile > >> because 1.) I prefer probability space, and 2.) I have a PR waiting > on > >> quantile(). > >> > >> Best, > >> > >> C > >> > >> ___ > >> NumPy-Discussion mailing list > >> NumPy-Discussion@python.org > >> https://mail.python.org/mailman/listinfo/numpy-discussion > >> > > > > > > ___ > > NumPy-Discussion mailing list > > NumPy-Discussion@python.org > > https://mail.python.org/mailman/listinfo/numpy-discussion > > > > > ___ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > > >>> > >>> > >>> ___ > >>> NumPy-Discussion mailing list > >>> NumPy-Discussion@python.org > >>> https://mail.python.org/mailman/listinfo/numpy-discussion > >>> > >> > > > > > > ___ > > NumPy-Discussion mailing list > > NumPy-Discussion@python.org > > https://mail.python.org/mailman/listinfo/numpy-discussion > > > ___ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > ___ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion