<div dir="ltr">Thanks for clarifying, Jaime, and fwiw I agree with Josef: I would expect np.bincount to behave like np.sum with regards to promoting weights dtypes. Including bool.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 27, 2016 at 1:58 PM,  <span dir="ltr"><<a href="mailto:josef.pktd@gmail.com" target="_blank">josef.pktd@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Sat, Mar 26, 2016 at 9:54 PM, Joseph Fox-Rabinovitz<br>
<<a href="mailto:jfoxrabinovitz@gmail.com">jfoxrabinovitz@gmail.com</a>> wrote:<br>
> Would it make sense to just make the output type large enough to hold the<br>
> cumulative sum of the weights?<br>
><br>
><br>
> - Joseph Fox-Rabinovitz<br>
><br>
> ------ Original message------<br>
><br>
> From: Jaime Fernández del Río<br>
><br>
> Date: Sat, Mar 26, 2016 16:16<br>
><br>
> To: Discussion of Numerical Python;<br>
><br>
> Subject:[Numpy-discussion] Make np.bincount output same dtype as weights<br>
><br>
> Hi all,<br>
><br>
> I have just submitted a PR (#7464) that fixes an enhancement request<br>
> (#6854), making np.bincount return an array of the same type as the weights<br>
> parameter.  This is an important deviation from current behavior, which<br>
> always casts weights to double, and always returns a double array, so I<br>
> would like to hear what others think about the worthiness of this.  Main<br>
> discussion points:<br>
><br>
> np.bincount now works with complex weights (yay!), I guess this should be a<br>
> pretty uncontroversial enhancement.<br>
> The return is of the same type as weights, which means that small integers<br>
> are very likely to overflow.  This is exactly what #6854 requested, but<br>
> perhaps we should promote the output for integers to a long, as we do in<br>
> np.sum?<br>
<br>
</span>I always thought of bincount with weights just as a group-by sum. So<br>
it would be easier to remember and have fewer surprises if it matches<br>
the behavior of np.sum.<br>
<span class=""><br>
> Boolean arrays stay boolean, and OR, rather than sum, the weights. Is this<br>
> what one would want? If we decide that integer promotion is the way to go,<br>
> perhaps booleans should go in the same pack?<br>
<br>
</span>Isn't this calculating the sum, i.e. count of True by group, already?<br>
Based on a quick example with numpy 1.9.2, I don't think I ever used<br>
bool weights before.<br>
<span class=""><br>
<br>
> This new implementation currently supports all of the reasonable native<br>
> types, but has no fallback for user defined types.  I guess we should<br>
> attempt to cast the array to double as before if no native loop can be<br>
> found? It would be good to have a way of testing this though, any thoughts<br>
> on how to go about this?<br>
> Does a behavior change like this require some deprecation period? What would<br>
> that look like?<br>
> I have also added broadcasting of weights to the full size of list, so that<br>
> one can do e.g. np.bincount([1, 2, 3], weights=2j) without having to tile<br>
> the single weight to the size of the bins list.<br>
><br>
> Any other thoughts are very welcome as well!<br>
<br>
</span>(2-D weights ?)<br>
<br>
<br>
Josef<br>
<span class="im HOEnZb"><br>
<br>
><br>
> Jaime<br>
><br>
> --<br>
> (__/)<br>
> ( O.o)<br>
> ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de<br>
> dominación mundial.<br>
><br>
</span><div class="HOEnZb"><div class="h5">> _______________________________________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
> <a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
><br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
</div></div></blockquote></div><br></div>