<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 9, 2015 at 10:32 PM, Phillip Feldman <span dir="ltr"><<a href="mailto:phillip.m.feldman@gmail.com" target="_blank">phillip.m.feldman@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"><div><div><div>Hello Nathaniel,<br><br>It is hard to say what is normative practice with NumPy, because there are at least three paradigms:<br><br></div>(1) Some operations are implemented as methods of the `ndarray` class.  `sum` and `mean` are examples.<br><br></div></div>(2) Some operations are implemented via functions that invoke a private method of the class.  `abs` is an example of this:<br><br><div><div><div>In [8]: x= array([1+1J])<br>In [9]: x.__abs__()<br>Out[9]: array([ 1.41421356])<br><br>(3) Some operations are implemented as functions that operate directly on the array, e.g., RMS (root-mean-square).<br><br></div><div>Because calculating the square of the magnitude is such a widely-used operation, and is often done in a grossly inefficient manner (e.g., by taking the absolute value, which involves a square-root, and then squaring), I believe that there is a strong argument for doing either (1) or (2).  I'd prefer (1).<span class="HOEnZb"><font color="#888888"><br><br></font></span></div></div></div></div></blockquote><div><br></div><div>We tend to avoid adding methods. 2) would be a very easy enhancement, just a slight modification of sqr.<br><br></div><div>Chuck <br></div></div></div></div>