[Numpy-discussion] request for new array method: arr.abs()
Travis Oliphant
oliphant.travis at ieee.org
Wed Aug 23 21:12:03 CDT 2006
Sebastian Haase wrote:
> On Wednesday 23 August 2006 18:37, Travis Oliphant wrote:
>
>> David M. Cooke wrote:
>>
>>> On Wed, 23 Aug 2006 16:22:52 -0700
>>>
>>> Sebastian Haase <haase at msg.ucsf.edu> wrote:
>>>
>>>> On Wednesday 23 August 2006 16:12, Bill Baxter wrote:
>>>>
>>>>> The thing that I find I keep forgetting is that abs() is a built-in,
>>>>> but other simple functions are not. So it's abs(foo), but
>>>>> numpy.floor(foo) and numpy.ceil(foo). And then there's round() which
>>>>> is a built-in but can't be used with arrays, so numpy.round_(foo).
>>>>> Seems like it would be more consistent to just add a numpy.abs() and
>>>>> numpy.round().
>>>>>
>>>> Regarding the original subject:
>>>> a) "absolute" is impractically too much typing and
>>>> b) I just thought some (module-) functions might be "forgotten" to be
>>>> put in as (object-) methods ... !?
>>>>
>>> Four-line change, so I added a.abs() (three lines for array, one
>>> for MaskedArray).
>>>
>> While I appreciate it's proactive nature, I don't like this change
>> because it adds another "ufunc" as a method. Right now, I think conj is
>> the only other method like that.
>>
>> Instead, I like better the idea of adding abs, round, max, and min to
>> the "non-import-*" namespace of numpy.
>>
>>
> How does this compare with
> mean, min, max, average
> ?
>
I'm not sure what this question is asking, so I'll answer what I think
it is asking.
The mean, min, max, and average functions are *not* ufuncs. They are
methods of particular ufuncs.
The abs() should not be slow (because it calls the __abs__ method which
for arrays is mapped to the ufunc absolute). Thus, there is one more
layer of indirection which will only matter for small arrays.
-Travis
More information about the Numpy-discussion
mailing list