def testAddWithOutExecution(self): data1 = np.random.random((5, 9, 4)) data2 = np.random.random((9, 4)) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) add(arr1, arr2, out=arr1) res = self.executor.execute_tensor(arr1, concat=True)[0] self.assertTrue(np.array_equal(res, data1 + data2)) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = add(arr1, arr2, out=arr1.astype('i4'), casting='unsafe') res = self.executor.execute_tensor(arr3, concat=True)[0] np.testing.assert_array_equal(res, (data1 + data2).astype('i4')) arr1 = tensor(data1.copy(), chunk_size=3) arr2 = tensor(data2.copy(), chunk_size=3) arr3 = truediv(arr1, arr2, out=arr1, where=arr2 > .5) res = self.executor.execute_tensor(arr3, concat=True)[0] self.assertTrue( np.array_equal( res, np.true_divide(data1, data2, out=data1.copy(), where=data2 > .5)))
def testDatatimeArith(self): t1 = array([np.datetime64('2005-02-02'), np.datetime64('2005-02-03')]) t2 = t1 + np.timedelta64(1) self.assertIsInstance(t2.op, AddConstant) t3 = t1 - np.datetime64('2005-02-02') self.assertIsInstance(t3.op, SubConstant) self.assertEqual(t3.dtype, (np.array(['2005-02-02', '2005-02-03'], dtype=np.datetime64) - np.datetime64('2005-02-02')).dtype) t1 = array([np.datetime64('2005-02-02'), np.datetime64('2005-02-03')]) subtract(t1, np.datetime64('2005-02-02'), out=empty(t1.shape, dtype=t3.dtype)) t1 = array([np.datetime64('2005-02-02'), np.datetime64('2005-02-03')]) add(t1, np.timedelta64(1, 'D'), out=t1)
def testAddWithOut(self): t1 = ones((3, 4), chunks=2) t2 = ones(4, chunks=2) t3 = add(t1, t2, out=t1) self.assertIsInstance(t1.op, Add) self.assertEqual(t1.op.out.key, t1.op.lhs.key) self.assertIs(t3, t1) self.assertEqual(t3.shape, (3, 4)) self.assertEqual(t3.op.lhs.params.raw_chunks, 2) self.assertIs(t3.op.rhs, t2.data) self.assertNotEqual(t3.key, t3.op.lhs.key) t3.tiles() self.assertIsInstance(t1.chunks[0].op, Add) self.assertEqual(t1.chunks[0].op.out.key, t1.chunks[0].op.lhs.key) with self.assertRaises(TypeError): add(t1, t2, out=1) with self.assertRaises(ValueError): add(t1, t2, out=t2) with self.assertRaises(TypeError): truediv(t1, t2, out=t1.astype('i8')) t1 = ones((3, 4), chunks=2, dtype=float) t2 = ones(4, chunks=2, dtype=int) t3 = add(t2, 1, out=t1) self.assertEqual(t3.shape, (3, 4)) self.assertEqual(t3.dtype, np.float64)
def testAdd(self): t1 = ones((3, 4), chunk_size=2) t2 = ones(4, chunk_size=2) t3 = t1 + t2 k1 = t3.key t3.tiles() self.assertNotEqual(t3.key, k1) self.assertEqual(t3.shape, (3, 4)) self.assertEqual(len(t3.chunks), 4) self.assertEqual(calc_shape(t3), t3.shape) self.assertEqual(t3.chunks[0].inputs, [t1.chunks[0].data, t2.chunks[0].data]) self.assertEqual(t3.chunks[1].inputs, [t1.chunks[1].data, t2.chunks[1].data]) self.assertEqual(t3.chunks[2].inputs, [t1.chunks[2].data, t2.chunks[0].data]) self.assertEqual(t3.chunks[3].inputs, [t1.chunks[3].data, t2.chunks[1].data]) self.assertEqual(t3.op.dtype, np.dtype('f8')) self.assertEqual(t3.chunks[0].op.dtype, np.dtype('f8')) self.assertEqual(calc_shape(t3.chunks[0]), t3.chunks[0].shape) t4 = t1 + 1 t4.tiles() self.assertEqual(t4.shape, (3, 4)) self.assertEqual(len(t3.chunks), 4) self.assertEqual(calc_shape(t4), t4.shape) self.assertEqual(t4.chunks[0].inputs, [t1.chunks[0].data]) self.assertEqual(t4.chunks[0].op.constant[0], 1) self.assertEqual(t4.chunks[1].inputs, [t1.chunks[1].data]) self.assertEqual(t4.chunks[1].op.constant[0], 1) self.assertEqual(t4.chunks[2].inputs, [t1.chunks[2].data]) self.assertEqual(t4.chunks[2].op.constant[0], 1) self.assertEqual(t4.chunks[3].inputs, [t1.chunks[3].data]) self.assertEqual(t4.chunks[3].op.constant[0], 1) self.assertEqual(calc_shape(t4.chunks[0]), t4.chunks[0].shape) # sparse tests t5 = add([1, 2, 3, 4], 1) t5.tiles() self.assertEqual(t4.chunks[0].inputs, [t1.chunks[0].data]) t1 = tensor([[0, 1, 0], [1, 0, 0]], chunk_size=2).tosparse() t = t1 + 1 self.assertFalse(t.issparse()) self.assertIs(type(t), Tensor) t.tiles() self.assertFalse(t.chunks[0].op.sparse) t = t1 + 0 self.assertTrue(t.issparse()) self.assertIs(type(t), SparseTensor) t2 = tensor([[1, 0, 0]], chunk_size=2).tosparse() t = t1 + t2 self.assertTrue(t.issparse()) self.assertIs(type(t), SparseTensor) t.tiles() self.assertTrue(t.chunks[0].op.sparse) t3 = tensor([1, 1, 1], chunk_size=2) t = t1 + t3 self.assertFalse(t.issparse()) self.assertIs(type(t), Tensor) t.tiles() self.assertFalse(t.chunks[0].op.sparse)