Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
    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)
Exemple #4
0
    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)