def dshape_extract(data, columns=None): if data is None: return None if hasattr(data, 'dshape'): return data.dshape if isinstance(data, np.ndarray): dshape = dshape_from_dtype(data.dtype) if columns is None: columns = gen_columns(len(data)) dshapes = [ "%s: %s"%(column, dshape) for column in columns ] return "{" + ", ".join(dshapes)+"}" if isinstance(data, pd.DataFrame): return dshape_from_dataframe(data) if isinstance(data, dict): return dshape_from_dict(data) return None
def dshape_extract(data: Any, columns: Optional[List[str]] = None) -> Optional[DataShape]: if data is None: return None if hasattr(data, "dshape"): return data.dshape # type: ignore if isinstance(data, np.ndarray): dshape = dshape_from_dtype(data.dtype) if columns is None: columns = gen_columns(len(data)) dshapes = ["%s: %s" % (column, dshape) for column in columns] return ds.dshape("{" + ", ".join(dshapes) + "}") if isinstance(data, pd.DataFrame): return dshape_from_dataframe(data) if isinstance(data, dict): return dshape_from_dict(data) return None
def from_array( array: np.ndarray[Any, Any], name: Optional[str] = None, columns: Optional[List[str]] = None, offsets: Optional[Union[List[int], List[Tuple[int, int]]]] = None, dshape: Optional[Union[str, DataShape]] = None, **kwds: Any, ) -> Table: """offsets is a list of indices or pairs.""" if offsets is None: offsets = [(i, i + 1) for i in range(array.shape[1])] elif offsets is not None: if all_int(offsets): ioffsets = cast(List[int], offsets) offsets = [(ioffsets[i], ioffsets[i + 1]) for i in range(len(ioffsets) - 1)] elif not all([isinstance(elt, tuple) for elt in offsets]): raise ValueError("Badly formed offset list %s", offsets) toffsets = cast(List[Tuple[int, int]], offsets) if columns is None: if dshape is None: columns = gen_columns(len(toffsets)) else: dshape = dshape_create(dshape) columns = [ fieldname for (fieldname, _) in dshape_fields(dshape) ] if dshape is None: dshape_type = dshape_from_dtype(array.dtype) dims = [ "" if (off[0] + 1 == off[1]) else "%d *" % (off[1] - off[0]) for off in toffsets ] dshapes = [ "%s: %s %s" % (column, dim, dshape_type) for column, dim in zip(columns, dims) ] dshape = "{" + ", ".join(dshapes) + "}" data = OrderedDict() for nam, off in zip(columns, toffsets): if off[0] + 1 == off[1]: data[nam] = array[:, off[0]] else: data[nam] = array[:, off[0]:off[1]] return Table(name, data=data, dshape=str(dshape), **kwds)
def from_array(array, name=None, columns=None, offsets=None, dshape=None, **kwds): """offsets is a list of indices or pairs. """ if offsets is None: offsets = [(i, i + 1) for i in range(array.shape[1])] if offsets is not None: if all_int(offsets): offsets = [(offsets[i], offsets[i + 1]) for i in range(len(offsets) - 1)] elif not all([isinstance(elt, tuple) for elt in offsets]): raise ValueError('Badly formed offset list %s', offsets) if columns is None: if dshape is None: columns = gen_columns(len(offsets)) else: dshape = dshape_create(dshape) columns = [ fieldname for (fieldname, _) in dshape_fields(dshape) ] if dshape is None: dshape_type = dshape_from_dtype(array.dtype) dims = [ "" if (off[0] + 1 == off[1]) else "%d *" % (off[1] - off[0]) for off in offsets ] dshapes = [ "%s: %s %s" % (column, dim, dshape_type) for column, dim in zip(columns, dims) ] dshape = "{" + ", ".join(dshapes) + "}" data = OrderedDict() for nam, off in zip(columns, offsets): if off[0] + 1 == off[1]: data[nam] = array[:, off[0]] else: data[nam] = array[:, off[0]:off[1]] return Table(name, data=data, dshape=dshape, **kwds)