def gradient(f, *varargs): '''Gradient of array f -- array *varargs -- 0, 1, N scalars for sample distance, or (1 or N-d) datasets for sample points ''' if varargs is None or len(varargs) == 0: g = _maths.gradient(f) else: # check for scalars, etc from jycore import arange as _ar vl = len(varargs) nd = f.getRank() if vl == 1: varargs = [varargs[0]]*nd vl = nd if vl != nd: raise ValueError, "Number of arguments must be 0, 1 or rank of f" xlist = [] for i in range(vl): x = varargs[i] xlist.append(x if isinstance(x, _ds) else (_ar(f.shape[i])*x)._jdataset()) g = _maths.gradient(f, xlist) if len(g) == 1: return g[0] return g
def gradient(f, *varargs): '''Gradient of array f -- array *varargs -- 0, 1, N scalars for sample distance, or (1 or N-d) datasets for sample points ''' if varargs is None or len(varargs) == 0: g = _maths.gradient(f) else: # check for scalars, etc from jycore import arange as _ar vl = len(varargs) nd = f.getRank() if vl == 1: varargs = [varargs[0]] * nd vl = nd if vl != nd: raise ValueError, "Number of arguments must be 0, 1 or rank of f" xlist = [] for i in range(vl): x = varargs[i] xlist.append(x if isinstance(x, _ds) else (_ar(f.shape[i]) * x)._jdataset()) g = _maths.gradient(f, xlist) if len(g) == 1: return g[0] return g
def interp(x, xp, fp, left=None, right=None): '''Linearly interpolate''' x = _asarray(x) xp = _asarray(xp) fp = _asarray(fp) if left is None: left = fp[0] if right is None: right = fp[-1] r = _asarray(_maths.interpolate(xp._jdataset(), fp._jdataset(), x._jdataset(), left, right)) if x.ndim == 0: return r.item() return r
def interp(x, xp, fp, left=None, right=None): '''Linearly interpolate''' x = _asarray(x) xp = _asarray(xp) fp = _asarray(fp) if left is None: left = fp[0] if right is None: right = fp[-1] r = _asarray( _maths.interpolate(xp._jdataset(), fp._jdataset(), x._jdataset(), left, right)) if x.ndim == 0: return r.item() return r
def hypot(a, b, out=None): '''Hypotenuse of triangle of given sides''' return _maths.hypot(a, b, out)
def clip(a, a_min, a_max, out=None): '''Clip input to given bounds (replace NaNs with midpoint of bounds)''' return _maths.clip(a, a_min, a_max, out)
def cosh(a, out=None): '''Hyperbolic cosine of input''' return _maths.cosh(a, out)
def floor(a, out=None): '''Largest integer smaller or equal to input''' return _maths.floor(a, out)
def rad2deg(a, out=None): '''Convert from radian to degree''' return _maths.toDegrees(a, out)
def log(a, out=None): '''Natural logarithm of input''' return _maths.log(a, out)
def expm1(x, out=None): '''Exponential of (x-1)''' return _maths.expm1(x, out)
def log1p(x, out=None): '''Natural logarithm of (x+1)''' return _maths.log1p(x, out)
def exp(a, out=None): '''Exponential of input''' return _maths.exp(a, out)
def log10(a, out=None): '''Logarithm of input to base 10''' return _maths.log10(a, out)
def arctanh(a, out=None): '''Inverse hyperbolic tangent of input''' return _maths.arctanh(a, out)
def arccosh(a, out=None): '''Inverse hyperbolic cosine of input''' return _maths.arccosh(a, out)
def tanh(a, out=None): '''Hyperbolic tangent of input''' return _maths.tanh(a, out)
def sqrt(a, out=None): '''Square root of input''' return _maths.sqrt(a, out)
def square(a, out=None): '''Square of input''' return _maths.square(a, out)
def power(a, p, out=None): '''Input raised to given power''' return _maths.power(a, p, out)
def rint(a, out=None): '''Round elements of input to nearest integers''' return _maths.rint(a, out)
def sign(a, out=None): '''Sign of input, indicated by -1 for negative, +1 for positive and 0 for zero''' return _maths.signum(a, out)
def ceil(a, out=None): '''Smallest integer greater or equal to input''' return _maths.ceil(a, out)
def diff(a, order=1, axis=-1): '''Difference of input''' return _maths.difference(a, order, axis)
def arctan2(a, b, out=None): '''Inverse tangent of a/b with correct choice of quadrant''' return _maths.arctan2(a, b, out)
def trunc(a, out=None): '''Truncate elements of input to nearest integers''' return _maths.truncate(a, out)
def sinh(a, out=None): '''Hyperbolic sine of input''' return _maths.sinh(a, out)
def deg2rad(a, out=None): '''Convert from degree to radian''' return _maths.toRadians(a, out)
def negative(a, out=None): '''Negate input''' return _maths.negative(a, out)
def minimum(a, b, out=None): '''Item-wise minimum''' return _maths.minimum(a, b)
def arctan(a, out=None): '''Inverse tangent of input''' return _maths.arctan(a, out)
def arccos(a, out=None): '''Inverse cosine of input''' return _maths.arccos(a, out)
def abs(a, out=None): #@ReservedAssignment '''Absolute value of input''' return _maths.abs(a, out)