[Numpy-discussion] Adding .abs() method to the array object

Charles R Harris charlesr.harris at gmail.com
Mon Feb 25 12:07:21 EST 2013


On Mon, Feb 25, 2013 at 8:50 AM, Skipper Seabold <jsseabold at gmail.com>wrote:

> On Mon, Feb 25, 2013 at 10:43 AM, Till Stensitzki <mail.till at gmx.de>
> wrote:
> >
> > First, sorry that i didnt search for an old thread, but because i
> disagree with
> > conclusion i would at least address my reason:
> >
> >> I don't like
> >> np.abs(arr).max()
> >> because I have to concentrate to much on the braces, especially if arr
> >> is a calculation
> >
> > This exactly, adding an abs into an old expression is always a little
> annoyance
> > due to the parenthesis. The argument that np.abs() also works is true for
> > (almost?) every other method. The fact that so many methods already
> exists,
> > especially for most of the commonly used functions (min, max, dot, mean,
> std,
> > argmin, argmax, conj, T) makes me missing abs. Of course, if one would
> redesign
> > the api, one would drop most methods (i am looking at you ptp and
> byteswap). But
> > the objected is already cluttered and adding abs is imo logical
> application of
> > "practicality beats purity".
> >
>
> I tend to agree here. The situation isn't all that dire for the number of
> methods in an array. No scrolling at reasonably small terminal sizes.
>
> [~/]
> [3]: x.
> x.T             x.copy          x.getfield      x.put           x.std
> x.all           x.ctypes        x.imag          x.ravel         x.strides
> x.any           x.cumprod       x.item          x.real          x.sum
> x.argmax        x.cumsum        x.itemset       x.repeat        x.swapaxes
> x.argmin        x.data          x.itemsize      x.reshape       x.take
> x.argsort       x.diagonal      x.max           x.resize        x.tofile
> x.astype        x.dot           x.mean          x.round         x.tolist
> x.base          x.dtype         x.min           x.searchsorted  x.tostring
> x.byteswap      x.dump          x.nbytes        x.setfield      x.trace
> x.choose        x.dumps         x.ndim          x.setflags      x.transpose
> x.clip          x.fill          x.newbyteorder  x.shape         x.var
> x.compress      x.flags         x.nonzero       x.size          x.view
> x.conj          x.flat          x.prod          x.sort
> x.conjugate     x.flatten       x.ptp           x.squeeze
>
>
> I find myself typing things like
>
> arr.abs()
>
> and
>
> arr.unique()
>
> quite often.
>
>
Somehow, this reminds me of I. N. Hersteins book, Topics in
Algebra<http://tinyurl.com/apoerwn>,
where he did function composition left-to-right instead of right-to-left.
>From a practical reading and typing point of view, left-to-right makes
sense, to add a new function you don't need to go way back to the beginning
of a line and you don't need to read right-to-left to see what is going on.
However, the line eventually gets too long, line breaks are inconvenient,
and you eventually forget what was at the beginning. I think short
left-to-right sequences are very nice. OTOH, one call/line is a bit like
left-to-right, only up-to-down, and there is no right margin, but you do
save the output generated on the previous line.

Herstein's attempt to revolutionise old algebraic habits never caught on.
But it was a bold attempt ;)

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130225/829c41a5/attachment.html>


More information about the NumPy-Discussion mailing list