def fromarrays( arraylist, dates=None, dtype=None, shape=None, formats=None, names=None, titles=None, aligned=False, byteorder=None ): """Creates a mrecarray from a (flat) list of masked arrays. :Parameters: - `arraylist` : Sequence A list of (masked) arrays. Each element of the sequence is first converted to a masked array if needed. If a 2D array is passed as argument, it is processed line by line - `dtype` : numeric.dtype Data type descriptor. - `shape` : Integer *[None]* Number of records. If None, `shape` is defined from the shape of the first array in the list. - `formats` : (Description to write) - `names` : (description to write) - `titles`: (Description to write) - `aligned`: Boolen *[False]* (Description to write, not used anyway) - `byteorder`: Boolen *[None]* (Description to write, not used anyway) """ arraylist = [MA.asarray(x) for x in arraylist] # Define/check the shape..................... if shape is None or shape == 0: shape = arraylist[0].shape if isinstance(shape, int): shape = (shape,) # Define formats from scratch ............... if formats is None and dtype is None: formats = _getformats(arraylist) # Define the dtype .......................... if dtype is not None: descr = numeric.dtype(dtype) _names = descr.names else: parsed = format_parser(formats, names, titles, aligned, byteorder) _names = parsed._names descr = parsed._descr # Determine shape from data-type............. if len(descr) != len(arraylist): msg = "Mismatch between the number of fields (%i) and the number of " "arrays (%i)" raise ValueError, msg % (len(descr), len(arraylist)) d0 = descr[0].shape nn = len(d0) if nn > 0: shape = shape[:-nn] # Make sure the shape is the correct one .... for k, obj in enumerate(arraylist): nn = len(descr[k].shape) testshape = obj.shape[: len(obj.shape) - nn] if testshape != shape: raise ValueError, "Array-shape mismatch in array %d" % k # Reconstruct the descriptor, by creating a _data and _mask version return MultiTimeSeries(arraylist, dtype=descr)