def test_prod_floats(): random_numbers = np.random.randn(3) DT = dt.Frame(A=random_numbers) RES = DT[:, prod(f.A)] frame_integrity_check(RES) assert RES.to_numpy().item() == np.prod(random_numbers) assert str(RES)
def test_reduce_prod(): f0 = dt.Frame({ "color": ["red", "blue", "green", "red", "green"], "size": [5, 2, 7, 13, -1] }) f1 = f0[:, prod(f.size), f.color] frame_integrity_check(f1) assert f1.to_list() == [["blue", "green", "red"], [2, -7, 65]]
def test_prod_empty_frame(): DT = dt.Frame([[]] * 4, names=list("ABCD"), stypes=(dt.bool8, dt.int32, dt.float32, dt.float64)) assert DT.shape == (0, 4) RES = DT[:, prod(f[:])] frame_integrity_check(RES) assert_equals( RES, dt.Frame(A=[1] / dt.int64, B=[1] / dt.int64, C=[1] / dt.float32, D=[1] / dt.float64)) assert str(RES)
def test_groupby_multi_prod(): DT = dt.Frame(A=[1, 2, 3] * 3, B=[1, 2] * 4 + [1], C=range(1, 10)) res = DT[:, prod(f.C), by("A", "B")] assert res.to_list() == [[1, 1, 2, 2, 3, 3], [1, 2, 1, 2, 1, 2], [7, 4, 5, 16, 27, 6]]
def test_prod_bool(): DT = dt.Frame(A=[True, False, True]) RES = DT[:, prod(f.A)] frame_integrity_check(RES) assert RES.to_numpy().item() == np.prod([True, False, True]) assert str(RES)
def test_prod_simple(): DT = dt.Frame(A=range(1, 5)) RES = DT[:, prod(f.A)] frame_integrity_check(RES) assert RES.to_numpy().item() == np.prod(np.arange(1, 5)) assert str(RES)
def test_prod(): assert str(dt.prod(f.A)) == str(f.A.prod()) assert str(dt.prod(f[:])) == str(f[:].prod()) DT = dt.Frame(A=range(1, 10)) assert_equals(DT[:, f.A.prod()], DT[:, dt.prod(f.A)])