<div dir="ltr">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.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 3, 2017 at 11:10 AM, Joseph Fox-Rabinovitz <span dir="ltr"><<a href="mailto:jfoxrabinovitz@gmail.com" target="_blank">jfoxrabinovitz@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Not that I know of. The algorithm is very simple, requiring a<br>
relatively small addition to the current introselect algorithm used<br>
for `np.partition`. My biggest hurdle is figuring out how the calling<br>
machinery really works so that I can figure out which input type<br>
permutations I need to generate, and how to get the right backend<br>
running for a given function call.<br>
<br>
    -Joe<br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Aug 3, 2017 at 1:00 PM, Chun-Wei Yuan <<a href="mailto:chunwei.yuan@gmail.com">chunwei.yuan@gmail.com</a>> wrote:<br>
> Any way I can help expedite this?<br>
><br>
> On Fri, Jul 21, 2017 at 4:42 PM, Chun-Wei Yuan <<a href="mailto:chunwei.yuan@gmail.com">chunwei.yuan@gmail.com</a>><br>
> wrote:<br>
>><br>
>> That would be great.  I just used np.argsort because it was familiar to<br>
>> me.  Didn't know about the C code.<br>
>><br>
>> On Fri, Jul 21, 2017 at 3:43 PM, Joseph Fox-Rabinovitz<br>
>> <<a href="mailto:jfoxrabinovitz@gmail.com">jfoxrabinovitz@gmail.com</a>> wrote:<br>
>>><br>
>>> While #9211 is a good start, it is pretty inefficient in terms of the<br>
>>> fact that it performs an O(nlogn) sort of the array. It is possible to<br>
>>> reduce the time to O(n) by using a similar partitioning algorithm to the one<br>
>>> in the C code of percentile. I will look into it as soon as I can.<br>
>>><br>
>>>     -Joe<br>
>>><br>
>>> On Fri, Jul 21, 2017 at 5:34 PM, Chun-Wei Yuan <<a href="mailto:chunwei.yuan@gmail.com">chunwei.yuan@gmail.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> Just to provide some context, 9213 actually spawned off of this guy:<br>
>>>><br>
>>>> <a href="https://github.com/numpy/numpy/pull/9211" rel="noreferrer" target="_blank">https://github.com/numpy/<wbr>numpy/pull/9211</a><br>
>>>><br>
>>>> which might address the weighted inputs issue Joe brought up.<br>
>>>><br>
>>>> C<br>
>>>><br>
>>>> On Fri, Jul 21, 2017 at 2:21 PM, Joseph Fox-Rabinovitz<br>
>>>> <<a href="mailto:jfoxrabinovitz@gmail.com">jfoxrabinovitz@gmail.com</a>> wrote:<br>
>>>>><br>
>>>>> I think that there would be a very good reason to have a separate<br>
>>>>> function if we were to introduce weights to the inputs, similarly to the way<br>
>>>>> that we have mean and average. This would have some (positive) repercussions<br>
>>>>> like making weighted histograms with the Freedman-Diaconis binwidth<br>
>>>>> estimator a possibility. I have had this change on the back-burner for a<br>
>>>>> long time, mainly because I was too lazy to figure out how to include it in<br>
>>>>> the C code. However, I will take a closer look.<br>
>>>>><br>
>>>>> Regards,<br>
>>>>><br>
>>>>>     -Joe<br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>> On Fri, Jul 21, 2017 at 5:11 PM, Chun-Wei Yuan <<a href="mailto:chunwei.yuan@gmail.com">chunwei.yuan@gmail.com</a>><br>
>>>>> wrote:<br>
>>>>>><br>
>>>>>> There's an ongoing effort to introduce quantile() into numpy.  You'd<br>
>>>>>> use it just like percentile(), but would input your q value in probability<br>
>>>>>> space (0.5 for 50%):<br>
>>>>>><br>
>>>>>> <a href="https://github.com/numpy/numpy/pull/9213" rel="noreferrer" target="_blank">https://github.com/numpy/<wbr>numpy/pull/9213</a><br>
>>>>>><br>
>>>>>> Since there's a great deal of overlap between these two functions,<br>
>>>>>> we'd like to solicit opinions on how to move forward on this.<br>
>>>>>><br>
>>>>>> The current thinking is to tolerate the redundancy and keep both,<br>
>>>>>> using one as the engine for the other.  I'm partial to having quantile<br>
>>>>>> because 1.) I prefer probability space, and 2.) I have a PR waiting on<br>
>>>>>> quantile().<br>
>>>>>><br>
>>>>>> Best,<br>
>>>>>><br>
>>>>>> C<br>
>>>>>><br>
>>>>>> ______________________________<wbr>_________________<br>
>>>>>> NumPy-Discussion mailing list<br>
>>>>>> <a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
>>>>>> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
>>>>>><br>
>>>>><br>
>>>>><br>
>>>>> ______________________________<wbr>_________________<br>
>>>>> NumPy-Discussion mailing list<br>
>>>>> <a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
>>>>> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
>>>>><br>
>>>><br>
>>>><br>
>>>> ______________________________<wbr>_________________<br>
>>>> NumPy-Discussion mailing list<br>
>>>> <a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
>>>> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
>>>><br>
>>><br>
>>><br>
>>> ______________________________<wbr>_________________<br>
>>> NumPy-Discussion mailing list<br>
>>> <a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
>>> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
>>><br>
>><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
><br>
______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
</div></div></blockquote></div><br></div>