diff options
Diffstat (limited to 'numpy/oldnumeric/arrayfns.py')
-rw-r--r-- | numpy/oldnumeric/arrayfns.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/numpy/oldnumeric/arrayfns.py b/numpy/oldnumeric/arrayfns.py new file mode 100644 index 000000000..e80246a57 --- /dev/null +++ b/numpy/oldnumeric/arrayfns.py @@ -0,0 +1,98 @@ +"""Backward compatible with arrayfns from Numeric +""" + +__all__ = ['array_set', 'construct3', 'digitize', 'error', 'find_mask', 'histogram', 'index_sort', + 'interp', 'nz', 'reverse', 'span', 'to_corners', 'zmin_zmax'] + +import numpy as nx +from numpy import asarray + +class error(Exception): + pass + +def array_set(vals1, indices, vals2): + indices = asarray(indices) + if indices.ndim != 1: + raise ValueError, "index array must be 1-d" + if not isinstance(vals1, ndarray): + raise TypeError, "vals1 must be an ndarray" + vals1 = asarray(vals1) + vals2 = asarray(vals2) + if vals1.ndim != vals2.ndim or vals1.ndim < 1: + raise error, "vals1 and vals2 must have same number of dimensions (>=1)" + vals1[indices] = vals2 + +from numpy import digitize +from numpy import bincount as histogram + +def index_sort(arr): + return asarray(arr).argsort(kind='heap') + +def interp(y, x, z, typ=None): + """y(z) interpolated by treating y(x) as piecewise function + """ + res = numpy.interp(z, x, y) + if typ is None or typ == 'd': + return res + if typ == 'f': + return res.astype('f') + + raise error, "incompatible typecode" + +def nz(x): + x = asarray(x,dtype=nx.ubyte) + if x.ndim != 1: + raise TypeError, "intput must have 1 dimension." + indxs = nx.flatnonzero(x != 0) + return indxs[-1].item()+1 + +def reverse(x, n): + x = asarray(x,dtype='d') + if x.ndim != 2: + raise ValueError, "input must be 2-d" + y = nx.empty_like(x) + if n == 0: + y[...] = x[::-1,:] + elif n == 1: + y[...] = x[:,::-1] + return y + +def span(lo, hi, num, d2=0): + x = linspace(lo, hi, num) + if d2 <= 0: + return x + else: + ret = empty((d2,num),x.dtype) + ret[...] = x + return ret + +def zmin_zmax(z, ireg): + z = asarray(z, dtype=float) + ireg = asarray(ireg, dtype=int) + if z.shape != ireg.shape or z.ndim != 2: + raise ValueError, "z and ireg must be the same shape and 2-d" + ix, iy = nx.nonzero(ireg) + # Now, add more indices + x1m = ix - 1 + y1m = iy-1 + i1 = x1m>=0 + i2 = y1m>=0 + i3 = i1 & i2 + nix = nx.r_[ix, x1m[i1], x1m[i1], ix[i2] ] + niy = nx.r_[iy, iy[i1], y1m[i3], y1m[i2]] + # remove any negative indices + zres = z[nix,niy] + return zres.min().item(), zres.max().item() + + +def find_mask(fs, node_edges): + raise NotImplementedError + +def to_corners(arr, nv, nvsum): + raise NotImplementedError + + +def construct3(mask, itype): + raise NotImplementedError + + |