[Numpy-discussion] Adding .abs() method to the array object
Sebastian Berg
sebastian at sipsolutions.net
Mon Feb 25 21:20:17 EST 2013
On Mon, 2013-02-25 at 10:50 -0500, Skipper Seabold 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
>
>
Two small things (not sure if it matters much). But first almost all of
these methods are related to the container and not the elements. Second
actually using a method arr.abs() has a tiny pitfall, since abs would
work on numpy types, but not on python types. This means that:
np.array([1, 2, 3]).max().abs()
works, but
np.array([1, 2, 3], dtype=object).max().abs()
breaks. Python has a safe name for abs already...
> I find myself typing things like
>
> arr.abs()
>
> and
>
> arr.unique()
>
> quite often.
>
> Skipper
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
More information about the NumPy-Discussion
mailing list