On Mon, Feb 25, 2013 at 9:58 PM, <josef.p...@gmail.com> wrote: > On Mon, Feb 25, 2013 at 9:20 PM, Sebastian Berg > <sebast...@sipsolutions.net> wrote: >> On Mon, 2013-02-25 at 10:50 -0500, Skipper Seabold wrote: >>> On Mon, Feb 25, 2013 at 10:43 AM, Till Stensitzki <mail.t...@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... > >>>> (np.array([1, 2, 3], dtype=object)).max() > 3 >>>> (np.array([1, 2, 3], dtype=object)).__abs__().max() > 3 >>>> (np.array([1, 2, '3'], dtype=object)).__abs__() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: bad operand type for abs(): 'str' > >>>> map(abs, [1, 2, 3]) > [1, 2, 3] >>>> map(abs, [1, 2, '3']) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: bad operand type for abs(): 'str'
or maybe more useful >>> from decimal import Decimal >>> d = [Decimal(str(k)) for k in np.linspace(-1, 1, 5)] >>> map(abs, d) [Decimal('1.0'), Decimal('0.5'), Decimal('0.0'), Decimal('0.5'), Decimal('1.0')] >>> np.asarray(d).__abs__() array([1.0, 0.5, 0.0, 0.5, 1.0], dtype=object) >>> np.asarray(d).__abs__()[0] Decimal('1.0') Josef > > I don't see a difference. > > (I don't expect to use max abs on anything else than numbers.) > > Josef >> >> >>> I find myself typing things like >>> >>> arr.abs() >>> >>> and >>> >>> arr.unique() >>> >>> quite often. >>> >>> Skipper >>> _______________________________________________ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@scipy.org >>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion