def test_exp(): from datatable import exp assert exp(0) == math.exp(0) assert exp(1) == math.exp(1) assert exp(-2.5e12) == math.exp(-2.5e12) assert exp(12345678) == math.inf assert exp(None) is None
def test_exp_srcs(src): from math import exp, inf DT = dt.Frame(src) DT1 = dt.exp(DT) frame_integrity_check(DT1) assert all([st == stype.float64 for st in DT1.stypes]) pyans = [] for x in src: if x is None: pyans.append(None) else: try: pyans.append(exp(x)) except OverflowError: pyans.append(inf) assert DT1.to_list()[0] == pyans
def test_exp_srcs(src): from math import exp, inf dt0 = dt.Frame(src) dt1 = dt.exp(dt0) dt1.internal.check() assert all([st == stype.float64 for st in dt1.stypes]) pyans = [] for x in src: if x is None: pyans.append(None) else: try: pyans.append(exp(x)) except OverflowError: pyans.append(inf) assert dt1.to_list()[0] == pyans
def test_exp_all_stypes(): from datatable import exp src = [[-127, -5, -1, 0, 2, 127], [-32767, -299, -7, 32767, 12, -543], [-2147483647, -1000, 3, -589, 2147483647, 0], [-2**63 + 1, 2**63 - 1, 0, -2**32, 2**32, -793]] DT = dt.Frame(src, stypes=[dt.int8, dt.int16, dt.int32, dt.int64]) DT1 = DT[:, [exp(f[i]) for i in range(4)]] frame_integrity_check(DT1) pyans = [] for col in src: l = [] for x in col: if x is None: l.append(None) else: try: l.append(math.exp(x)) except OverflowError: l.append(math.inf) pyans.append(l) assert DT1.to_list() == pyans
def test_exp_all_stypes(): from datatable import exp import math src = [[-127, -5, -1, 0, 2, 127], [-32767, -299, -7, 32767, 12, -543], [-2147483647, -1000, 3, -589, 2147483647, 0], [-2**63 + 1, 2**63 - 1, 0, -2**32, 2**32, -793]] dt0 = dt.Frame(src, stypes=[dt.int8, dt.int16, dt.int32, dt.int64]) dt1 = dt0[:, [exp(f[i]) for i in range(4)]] dt1.internal.check() pyans = [] for col in src: l = [] for x in col: if x is None: l.append(None) else: try: l.append(math.exp(x)) except OverflowError: l.append(math.inf) pyans.append(l) assert dt1.topython() == pyans
def transform(self, X: dt.Frame): return X[:, [(dt.f[i] / dt.abs(dt.f[i])) * dt.exp(0.5 * dt.log(dt.abs(dt.f[i]))) for i in range(X.ncols)]]
def transform(self, X: dt.Frame): X_diff = X[:, dt.f[0] - dt.f[1]] X_diff[dt.f[0] > 20, 0] = 20 # want no more than e**20 return X_diff[:, dt.exp(dt.f[0])]
def transform(self, X: dt.Frame): return X[:, dt.exp(dt.f[0] - dt.f[1])]
# https://datatable.readthedocs.io/en/latest/?badge=latest # https://datatable.readthedocs.io/en/latest/using-datatable.html try: # noinspection PyUnresolvedReferences import datatable except ImportError: pass import data_algebra import data_algebra.data_model import data_algebra.expr_rep import data_algebra.data_ops expr_to_dt_expr_map = { "exp": lambda expr: datatable.exp(expr_to_dt_expr(expr.args[0])), "sum": lambda expr: datatable.sum(expr_to_dt_expr(expr.args[0])), "+": lambda expr: expr_to_dt_expr(expr.args[0]) + expr_to_dt_expr(expr.args[1]), "-": lambda expr: expr_to_dt_expr(expr.args[0]) - expr_to_dt_expr(expr.args[1]), "*": lambda expr: expr_to_dt_expr(expr.args[0]) * expr_to_dt_expr(expr.args[1]), "/": lambda expr: expr_to_dt_expr(expr.args[0]) / expr_to_dt_expr(expr.args[1]), "neg": lambda expr: -expr_to_dt_expr(expr.args[0]), } def expr_to_dt_expr(expr): if isinstance(expr, data_algebra.expr_rep.ColumnReference):