* Function ztol: for zeroing out array elements below certain tolerance.
This commit is contained in:
@@ -1,7 +1,30 @@
|
||||
# $Id: __init__.py,v 1.1 2010-01-20 03:11:01 wirawan Exp $
|
||||
# $Id: __init__.py,v 1.2 2010-05-28 18:43:59 wirawan Exp $
|
||||
#
|
||||
# wpylib.math main module
|
||||
# Created: 20091204
|
||||
# Wirawan Purwanto
|
||||
#
|
||||
pass
|
||||
|
||||
import numpy
|
||||
|
||||
ZERO_TOL = 5.0e-16
|
||||
|
||||
def ztol(val, tol=None, copy=True):
|
||||
"""Rounds down values to zero if they are below tolerance."""
|
||||
if tol == None: tol = ZERO_TOL
|
||||
if "__iter__" not in dir(val):
|
||||
if numpy.abs(val) < tol:
|
||||
return 0
|
||||
else:
|
||||
return val
|
||||
elif isinstance(val, numpy.ndarray):
|
||||
if copy:
|
||||
rslt = val.copy()
|
||||
else:
|
||||
rslt = val
|
||||
numpy.putmask(rslt, numpy.abs(rslt) < tol, [0])
|
||||
return rslt
|
||||
else:
|
||||
raise ValueError, "Unsupported datatype: %s" % str(type(val))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user