<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Dec 26, 2016 at 1:34 AM, Nicolas P. Rougier <span dir="ltr"><<a href="mailto:Nicolas.Rougier@inria.fr" target="_blank">Nicolas.Rougier@inria.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
I'm trying to understand why viewing an array as bytes before clearing makes the whole operation faster.<br>
I imagine there is some kind of special treatment for byte arrays but I've no clue.<br></blockquote><div><br></div><div>I notice that the code is simply setting a value using broadcasting -- I don't think there is anything special about zero in that case. But your subject refers to "clearing" an array.</div><div><br></div><div>So I wonder if you have a use case where the performance difference matters, in which case _maybe_ it would be worth having a ndarray.zero() method that efficiently zeros out an array.</div><div><br></div><div>Actually, there is ndarray.fill():</div><div><br></div><font face="monospace, monospace">In [7]: %timeit Z_float[...] = 0<br><br>1000 loops, best of 3: 380 µs per loop<br><br><br>In [8]: %timeit Z_float.view(np.byte)[...] = 0<br><br>1000 loops, best of 3: 271 µs per loop<br><br><br>In [9]: %timeit Z_float.fill(0)<br><br>1000 loops, best of 3: 363 µs per loop<br><br></font>which seems to take an insignificantly shorter time than assignment. Probably because it's doing exactly the same loop.</div><div class="gmail_quote"><br></div><div class="gmail_quote">whereas a .zero() could use a memset, like it does with bytes.</div><div class="gmail_quote"><br></div><div class="gmail_quote">can't say I have a use-case that would justify this, though.</div><div class="gmail_quote"><br></div><div class="gmail_quote">-CHB</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
# Native float<br>
Z_float = np.ones(1000000, float)<br>
Z_int   = np.ones(1000000, int)<br>
<br>
%timeit Z_float[...] = 0<br>
1000 loops, best of 3: 361 µs per loop<br>
<br>
%timeit Z_int[...] = 0<br>
1000 loops, best of 3: 366 µs per loop<br>
<br>
%timeit Z_float.view(np.byte)[...] = 0<br>
1000 loops, best of 3: 267 µs per loop<br>
<br>
%timeit Z_int.view(np.byte)[...] = 0<br>
1000 loops, best of 3: 266 µs per loop<br>
<br>
<br>
Nicolas<br>
______________________________<wbr>_________________<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/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            (206) 526-6959   voice<br>7600 Sand Point Way NE   (206) 526-6329   fax<br>Seattle, WA  98115       (206) 526-6317   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</div></div>