[Numpy-discussion] round() and abs() Ufuncs???

Chris Barker chrishbarker at home.net
Wed Sep 26 11:35:05 CDT 2001


Hi all,

I was recently surprised to find that there are no round(0 or abs()
Ufuncs with Numeric. I'm imagining that they might exist under other
names, but if not, I submit my versions for critique (lightly tested)

-Chris

from Numeric import *

def Uabs(a):
    """

    A Ufunc version of the Python abs() function

    """
    a = asarray(a)
    if a.typecode() == 'D' or a.typecode() == 'F':# for complex numbers
        return sqrt(a.imag**2 + a.real**2)
    else:
        return where(a < 0, -a, a)

def Uround(a,n=0):
    """

    A Ufunc version of the Python round() function. It should behave in
the same way

    Note: I think this is the right thing to do for negative numbers,
    but not totally sure. (Uround(-0.5) = 0, but Uround(-0.5000001) =
-1)

    It won't work for complex numbers

    """

    a = asarray(a)
    n = asarray(n)
    return floor((a * 10.**n) + 0.5) / 10.**n
    



-- 
Christopher Barker,
Ph.D.                                                           
ChrisHBarker at home.net                 ---           ---           ---
http://members.home.net/barkerlohmann ---@@       -----@@       -----@@
                                   ------@@@     ------@@@     ------@@@
Oil Spill Modeling                ------   @    ------   @   ------   @
Water Resources Engineering       -------      ---------     --------    
Coastal and Fluvial Hydrodynamics --------------------------------------
------------------------------------------------------------------------




More information about the Numpy-discussion mailing list