コード例 #1
0
    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]))
コード例 #2
0
 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)