def unit_to_dtype(ds): """ >>> unit_to_dtype('int32') dtype('int32') >>> unit_to_dtype('float64') dtype('float64') >>> unit_to_dtype('?int64') dtype('float64') >>> unit_to_dtype('string') dtype('O') >>> unit_to_dtype('?datetime') dtype('<M8[us]') """ if isinstance(ds, str): ds = dshape(ds) if isinstance(ds, DataShape): ds = ds.measure if isinstance(ds, Option) and isscalar(ds) and isnumeric(ds): return unit_to_dtype(str(ds).replace('int', 'float').replace('?', '')) if isinstance(ds, Option) and isinstance( ds.ty, (type(date_), type(datetime_), type(string), type(timedelta_))): ds = ds.ty if ds == string: return np.dtype('O') return to_numpy_dtype(ds)
def unit_to_dtype(ds): """ >>> unit_to_dtype('int32') dtype('int32') >>> unit_to_dtype('float64') dtype('float64') >>> unit_to_dtype('?int64') dtype('float64') >>> unit_to_dtype('string') dtype('O') >>> unit_to_dtype('?datetime') dtype('<M8[us]') """ if isinstance(ds, str): ds = dshape(ds) if isinstance(ds, DataShape): ds = ds.measure if isinstance(ds, Option) and isscalar(ds) and isnumeric(ds): return unit_to_dtype(str(ds).replace('int', 'float').replace('?', '')) if isinstance(ds, Option) and isinstance(ds.ty, (type(date_), type(datetime_), type(string), type(timedelta_))): ds = ds.ty if ds == string: return np.dtype('O') return to_numpy_dtype(ds)
def unit_to_dtype(ds): """ Convert a datashape Unit instance into a numpy dtype Parameters ---------- ds : DataShape The DataShape instance to convert Returns ------- np.dtype Examples -------- >>> unit_to_dtype('int32') dtype('int32') >>> unit_to_dtype('float64') dtype('float64') >>> unit_to_dtype('?int64') dtype('float64') >>> unit_to_dtype('string') dtype('O') >>> unit_to_dtype('?datetime') dtype('<M8[us]') """ if isinstance(ds, str): ds = dshape(ds) if isinstance(ds, DataShape): ds = ds.measure if isinstance(ds, Option) and isscalar(ds) and isnumeric(ds): if isinstance(ds.ty, Decimal): str_np_dtype = str(ds.ty.to_numpy_dtype()).replace('int', 'float') if str_np_dtype == 'float8': # not a valid dtype, so increase str_np_dtype = 'float16' return unit_to_dtype(str_np_dtype) return unit_to_dtype(str(ds).replace('int', 'float').replace('?', '')) if isinstance(ds, Option) and isinstance( ds.ty, (Date, DateTime, String, TimeDelta) ): ds = ds.ty if ds == string: return np.dtype('O') return to_numpy_dtype(ds)
def unit_to_dtype(ds): """ >>> unit_to_dtype('int32') dtype('int32') >>> unit_to_dtype('float64') dtype('float64') >>> unit_to_dtype('?int64') dtype('float64') >>> unit_to_dtype('string') dtype('O') """ if isinstance(ds, str): ds = dshape(ds)[0] if isinstance(ds, Option) and isscalar(ds) and isnumeric(ds): return unit_to_dtype(str(ds).replace('int', 'float').replace('?', '')) if isinstance(ds, Option) and ds.ty in (date_, datetime_, string): ds = ds.ty return to_numpy_dtype(ds)
""" Vector norm See np.linalg.norm """ if ord is None or ord == 'fro': ord = 2 if ord == inf: return max(abs(expr), axis=axis, keepdims=keepdims) elif ord == -inf: return min(abs(expr), axis=axis, keepdims=keepdims) elif ord == 1: return sum(abs(expr), axis=axis, keepdims=keepdims) elif ord % 2 == 0: return sum(expr**ord, axis=axis, keepdims=keepdims)**(1.0 / ord) return sum(abs(expr)**ord, axis=axis, keepdims=keepdims)**(1.0 / ord) dshape_method_list.extend([ (iscollection, set([count, nelements])), (lambda ds: (iscollection(ds) and (isstring(ds) or isnumeric(ds) or isboolean(ds) or isdatelike(ds))), set([min, max])), (lambda ds: len(ds.shape) == 1, set([nrows, nunique])), (lambda ds: iscollection(ds) and isboolean(ds), set([any, all])), (lambda ds: iscollection(ds) and (isnumeric(ds) or isboolean(ds)), set([mean, sum, std, var, vnorm])), ]) method_properties.update([nrows])
See np.linalg.norm """ if ord is None or ord == 'fro': ord = 2 if ord == inf: return max(abs(expr), axis=axis, keepdims=keepdims) elif ord == -inf: return min(abs(expr), axis=axis, keepdims=keepdims) elif ord == 1: return sum(abs(expr), axis=axis, keepdims=keepdims) elif ord % 2 == 0: return sum(expr ** ord, axis=axis, keepdims=keepdims) ** (1.0 / ord) return sum(abs(expr) ** ord, axis=axis, keepdims=keepdims) ** (1.0 / ord) dshape_method_list.extend([ (iscollection, set([count, nelements])), (lambda ds: (iscollection(ds) and (isstring(ds) or isnumeric(ds) or isboolean(ds) or isdatelike(ds) or isinstance(ds, TimeDelta))), set([min, max])), (lambda ds: len(ds.shape) == 1, set([nrows, nunique])), (lambda ds: iscollection(ds) and isboolean(ds), set([any, all])), (lambda ds: iscollection(ds) and (isnumeric(ds) or isboolean(ds)), set([mean, sum, std, var, vnorm])), ]) method_properties.update([nrows])
else: left, right = axes, axes if isinstance(left, int): left = (left, ) if isinstance(right, int): right = (right, ) if isinstance(left, list): left = tuple(left) if isinstance(right, list): right = tuple(right) return TensorDot(lhs, rhs, left, right) @copydoc(TensorDot) def dot(lhs, rhs): return tensordot(lhs, rhs) from datashape.predicates import isnumeric, isboolean from .expressions import dshape_method_list, method_properties dshape_method_list.extend([ (lambda ds: ndim(ds) > 1, set([transpose])), (lambda ds: ndim(ds) == 2, set([T])), (lambda ds: ndim(ds) >= 1 and (isnumeric(ds) or isboolean(ds)), set([dot])) ]) method_properties.add(T)
child = children[0] else: child = common_subexpression(*children) if axis is None: axis = tuple(range(ndim(child))) if isinstance(axis, (set, list)): axis = tuple(axis) if not isinstance(axis, tuple): axis = (axis,) return Summary(child, names, values, keepdims=keepdims, axis=axis) summary.__doc__ = Summary.__doc__ from datashape.predicates import iscollection, isboolean, isnumeric from .expressions import dshape_method_list, method_properties dshape_method_list.extend([ (iscollection, set([count, min, max, nelements])), (lambda ds: len(ds.shape) == 1, set([nrows, nunique])), (lambda ds: iscollection(ds) and isboolean(ds), set([any, all, sum])), (lambda ds: iscollection(ds) and isnumeric(ds), set([mean, sum, mean, min, max, std, var])), ]) method_properties.update([nrows])
def test_time(): assert not isnumeric('time')
else: left, right = axes, axes if isinstance(left, int): left = (left,) if isinstance(right, int): right = (right,) if isinstance(left, list): left = tuple(left) if isinstance(right, list): right = tuple(right) return TensorDot(lhs, rhs, left, right) tensordot.__doc__ = TensorDot.__doc__ def dot(lhs, rhs): return tensordot(lhs, rhs) from datashape.predicates import isnumeric, isboolean from .expressions import dshape_method_list, method_properties dshape_method_list.extend([ (lambda ds: ndim(ds) > 1, set([transpose])), (lambda ds: ndim(ds) == 2, set([T])), (lambda ds: ndim(ds) >= 1 and (isnumeric(ds) or isboolean(ds)), set([dot])) ]) method_properties.add(T)
""" Vector norm See np.linalg.norm """ if ord is None or ord == 'fro': ord = 2 if ord == inf: return max(abs(expr), axis=axis, keepdims=keepdims) elif ord == -inf: return min(abs(expr), axis=axis, keepdims=keepdims) elif ord == 1: return sum(abs(expr), axis=axis, keepdims=keepdims) elif ord % 2 == 0: return sum(expr**ord, axis=axis, keepdims=keepdims)**(1. / ord) else: return sum(abs(expr)**ord, axis=axis, keepdims=keepdims)**(1. / ord) from datashape.predicates import iscollection, isboolean, isnumeric from .expressions import dshape_method_list, method_properties dshape_method_list.extend([ (iscollection, set([count, min, max, nelements])), (lambda ds: len(ds.shape) == 1, set([nrows, nunique])), (lambda ds: iscollection(ds) and isboolean(ds), set([any, all, sum])), (lambda ds: iscollection(ds) and isnumeric(ds), set([mean, sum, mean, min, max, std, var, vnorm])), ]) method_properties.update([nrows])