def selection(table, predicate): subexpr = common_subexpression(table, predicate) if not builtins.all(isinstance(node, (ElemWise, Symbol)) or node.isidentical(subexpr) for node in concat([path(predicate, subexpr), path(table, subexpr)])): raise ValueError("Selection not properly matched with table:\n" "child: %s\n" "apply: %s\n" "predicate: %s" % (subexpr, table, predicate)) if not isboolean(predicate.dshape): raise TypeError("Must select over a boolean predicate. Got:\n" "%s[%s]" % (table, predicate)) return table._subs({subexpr: Selection(subexpr, predicate)})
""" 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)
""" 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) 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])
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])
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])
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])