<div dir="ltr"><div><div>Would it make sense to at all to bring that optimization to np.sum()? I know that I have np.sum() all over the place instead of count_nonzero, partly because it is a MatLab-ism and partly because it is easier to write. I had no clue that there was a performance difference.<br><br></div>Cheers!<br></div>Ben Root<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 17, 2015 at 1:37 PM, CJ Carey <span dir="ltr"><<a href="mailto:perimosocordiae@gmail.com" target="_blank">perimosocordiae@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I believe this line is the reason:<div><a href="https://github.com/numpy/numpy/blob/c0e48cfbbdef9cca954b0c4edd0052e1ec8a30aa/numpy/core/src/multiarray/item_selection.c#L2110" target="_blank">https://github.com/numpy/numpy/blob/c0e48cfbbdef9cca954b0c4edd0052e1ec8a30aa/numpy/core/src/multiarray/item_selection.c#L2110</a></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Thu, Dec 17, 2015 at 11:52 AM, Raghav R V <span dir="ltr"><<a href="mailto:ragvrv@gmail.com" target="_blank">ragvrv@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr">I was just playing with `count_nonzero` and found it to be significantly faster for boolean arrays compared to integer arrays<div><br></div><div><div><br></div><div>    >>> a = np.random.randint(0, 2, (100, 5))</div><div>    >>> a_bool = a.astype(bool)</div><div><br></div><div>    >>> %timeit np.sum(a)</div><div>    100000 loops, best of 3: 5.64 µs per loop</div></div><div><br></div><div><div>    >>> %timeit np.count_nonzero(a)<br></div><div>    1000000 loops, best of 3: 1.42 us per loop</div></div><div><br></div><div><div>    >>> %timeit np.count_nonzero(a_bool)</div><div>    1000000 loops, best of 3: 279 ns per loop (but why?)</div></div><div><br></div><div>I tried looking into the code and dug my way through <a href="https://github.com/numpy/numpy/blob/c0e48cfbbdef9cca954b0c4edd0052e1ec8a30aa/numpy/core/src/multiarray/item_selection.c#L2172" target="_blank">to this line</a>. I am unable to dig further.</div><div><br></div><div>I know this is probably a trivial question, but was wondering if anyone could provide insight on why this is so?</div><div><br></div><div>Thanks</div><span><font color="#888888"><div><br></div><div>R</div></font></span></div>
<br></div></div>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">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></blockquote></div><br></div>
<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>
<br></blockquote></div><br></div>