diff --git a/bcolz/ctable.py b/bcolz/ctable.py index 97d7bb89..bbf982ad 100644 --- a/bcolz/ctable.py +++ b/bcolz/ctable.py @@ -139,9 +139,13 @@ def cparams(self): "The compression parameters for this object." return self._cparams + _dtype = None @property def dtype(self): "The data type of this object (numpy dtype)." + if self._dtype: + return self._dtype + names, cols = self.names, self.cols l = [] for name in names: @@ -150,7 +154,8 @@ def dtype(self): t = (name, col.dtype) if col.ndim == 1 else \ (name, (col.dtype, col.shape[1:])) l.append(t) - return np.dtype(l) + self._dtype = np.dtype(l) + return self._dtype @property def names(self): @@ -487,6 +492,8 @@ def addcol(self, newcol, name=None, pos=None, move=False, **kwargs): # Insert the column self.cols.insert(name, pos, newcol) + # Trigger update of dtype cache + self._dtype = None # Update _arr1 self._arr1 = np.empty(shape=(1,), dtype=self.dtype) @@ -540,6 +547,8 @@ def delcol(self, name=None, pos=None, keep=False): if not keep: col.purge() + # Trigger update of dtype cache + self._dtype = None # Update _arr1 self._arr1 = np.empty(shape=(1,), dtype=self.dtype)