def take(self, idxs):
        """ Takes a subset of rows """
        import utool as ut
        if False:
            key_to_list = ut.odict([
                (key, ut.take(val, idxs))
                for key, val in six.iteritems(self._key_to_list)
            ])
        else:
            import numpy as np
            key_to_list = ut.odict([
                (key, ut.take(val, idxs))
                if not isinstance(val, np.ndarray)
                else val.take(idxs, axis=0)
                for key, val in six.iteritems(self._key_to_list)
            ])
        newself = self.__class__(key_to_list, self._meta.copy())
        return newself
Takes a subset of rows