Source code for flopy.utils.recarray_utils

import numpy as np


[docs]def create_empty_recarray(length, dtype, default_value=0): """ Create a empty recarray with a defined default value for floats. Parameters ---------- length : int Shape of the empty recarray. dtype : np.dtype dtype of the empty recarray. default_value : float default value to use for floats in recarray. Returns ------- r : np.recarray Recarray of type dtype with shape length. Examples -------- >>> import numpy as np >>> import flopy >>> dtype = np.dtype([('x', np.float32), ('y', np.float32)]) >>> ra = flopy.utils.create_empty_recarray(10, dtype) """ r = np.zeros(length, dtype=dtype) msg = "dtype argument must be an instance of np.dtype, not list." assert isinstance(dtype, np.dtype), msg for name in dtype.names: dt = dtype.fields[name][0] if np.issubdtype(dt, np.float_): r[name] = default_value return r.view(np.recarray)
[docs]def ra_slice(ra, cols): """ Create a slice of a recarray Parameters ---------- ra : np.recarray recarray to extract a limited number of columns from. cols : list of str List of key names to extract from ra. Returns ------- ra_slice : np.recarray Slice of ra Examples -------- >>> import flopy >>> raslice = flopy.utils.ra_slice(ra, ['x', 'y']) """ raslice = np.column_stack([ra[c] for c in cols]) dtype = [(str(d[0]), str(d[1])) for d in ra.dtype.descr if d[0] in cols] return np.array([tuple(r) for r in raslice], dtype=dtype).view(np.recarray)
[docs]def recarray(array, dtype): """ Convert a list of lists or tuples to a recarray. Parameters ---------- array : list of lists list of lists containing data to convert to a recarray. The number of entries in each list in the list must be the same. dtype : np.dtype dtype of the array data Returns ------- r : np.recarray Recarray of type dtype with shape equal to the length of array. Examples -------- >>> import numpy as np >>> import flopy >>> dtype = np.dtype([('x', np.float32), ('y', np.float32)]) >>> arr = [(1., 2.), (10., 20.), (100., 200.)] >>> ra = flopy.utils.recarray(arr, dtype) """ array = np.atleast_2d(array) # convert each entry of the list to a tuple if not isinstance(array[0], tuple): array = list(map(tuple, array)) return np.array(array, dtype=dtype).view(np.recarray)