def test_to_array(self) -> None: t = Table("table_to_array", dshape="{a: int, b: float32, c: real}", create=True) t.resize(10) ivalues = np.random.randint(100, size=10) t["a"] = ivalues fvalues = np.random.rand(10) t["b"] = fvalues dvalues = np.random.rand(10) t["c"] = dvalues a = t["a"] b = t["b"] c = t["c"] arr = t.to_array() self.assertEqual(arr.dtype, np.float64) self.assertEqual(arr.shape[0], t.nrow) self.assertEqual(arr.shape[1], t.ncol) self.assertTrue(np.allclose(a[:], arr[:, 0])) self.assertTrue(np.allclose(b[:], arr[:, 1])) self.assertTrue(np.allclose(c[:], arr[:, 2])) # Columns arr = t.to_array(columns=["a", "b"]) self.assertEqual(arr.dtype, np.float64) self.assertEqual(arr.shape[0], t.nrow) self.assertEqual(arr.shape[1], 2) self.assertTrue(np.allclose(a[:], arr[:, 0])) self.assertTrue(np.allclose(b[:], arr[:, 1])) # Keys key1 = slice(2, 7) arr = t.to_array(key1) key = t.id_to_index( key1).to_slice_maybe() # slices contain their bounds self.assertEqual(arr.dtype, np.float64) self.assertEqual(arr.shape[0], key.stop - key.start) self.assertEqual(arr.shape[1], 3) self.assertTrue(np.allclose(a[key], arr[:, 0])) self.assertTrue(np.allclose(b[key], arr[:, 1])) self.assertTrue(np.allclose(c[key], arr[:, 2])) # Keys with fancy indexing key2 = [2, 4, 6, 8] arr = t.to_array(key2) indices = t.id_to_index(key2) # slices contain their bounds self.assertEqual(arr.dtype, np.float64) self.assertEqual(arr.shape[0], len(indices)) self.assertEqual(arr.shape[1], 3) self.assertTrue(np.allclose(a[indices], arr[:, 0])) self.assertTrue(np.allclose(b[indices], arr[:, 1])) self.assertTrue(np.allclose(c[indices], arr[:, 2]))
def test_set_at(self) -> None: t = Table("table_set_at", dshape="{a: int, b: float32}", create=True) t.resize(20) ivalues = np.random.randint(100, size=20) t["a"] = ivalues fvalues = np.random.rand(20) t["b"] = fvalues t.at[3, "a"] = 1001 self.assertEqual(t._column(0)[3], 1001) t.at[3, "a"] = 1001 self.assertEqual(t._column(0)[3], 1001) t.at[3, 0] = 1002 self.assertEqual(t._column(0)[3], 1002) view = t.loc[2:11] assert view is not None view.loc[3, "a"] = 1003 self.assertEqual(view._column(0)[view.id_to_index(3)], 1003) self.assertEqual(t._column(0)[3], 1003) view_view = view.loc[3:6] assert view_view is not None view_view.at[3, "a"] = 1004 self.assertEqual(view_view._column(0)[view_view.id_to_index(3)], 1004) self.assertEqual(t._column(0)[3], 1004) view_view.at[2, 0] = 1005 self.assertEqual(view_view._column(0)[2], 1005) self.assertEqual( t._column(0)[t.id_to_index(view_view.index_to_id(2))], 1005)