* 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
|
# wpylib.math main module
|
||||||
# Created: 20091204
|
# Created: 20091204
|
||||||
# Wirawan Purwanto
|
# Wirawan Purwanto
|
||||||
#
|
#
|
||||||
pass
|
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