Exemplo n.º 1
0
    def __getitem__(self, index):
        from numbers import Number

        if isinstance(index, slice):
            start, stop, step = index.indices(len(self))
            sln = (stop - start) // step
            sln = max(0, sln)
            start += self._start
            stop += self._start
            if sln == 0:
                return RangeIndex(0, None, self.name)
            elif step == 1:
                return RangeIndex(start, stop, self.name)
            else:
                return index_from_range(start, stop, step)

        elif isinstance(index, Number):
            index = utils.normalize_index(index, len(self))
            index += self._start
            return index
        elif isinstance(index, (list, np.ndarray)):
            index = np.asarray(index)
            index = rmm.to_device(index)

        else:
            if is_scalar(index):
                index = min_signed_type(index)(index)
            index = column.as_column(index)

        return as_index(self._values[index], name=self.name)
Exemplo n.º 2
0
 def __getitem__(self, index):
     if isinstance(index, slice):
         start, stop = utils.normalize_slice(index, len(self))
         start += self._start
         stop += self._start
         if index.step is None:
             return RangeIndex(start, stop)
         else:
             return index_from_range(start, stop, index.step)
     elif isinstance(index, int):
         index = utils.normalize_index(index, len(self))
         index += self._start
         return index
     else:
         raise ValueError(index)
Exemplo n.º 3
0
 def __getitem__(self, arg):
     if isinstance(arg, slice):
         sliced = self.mem[arg]
         buf = Buffer(sliced)
         buf.dtype = self.dtype  # for np.datetime64 support
         return buf
     elif isinstance(arg, int):
         arg = utils.normalize_index(arg, self.size)
         # the dtype argument is necessary for datetime64 support
         # because currently we can't pass datetime64 types into
         # cuda dev arrays, so the type of the cuda dev array is
         # an i64, and we view it as the dtype on the buffer
         return self.mem[arg].view(self.dtype)
     else:
         raise NotImplementedError(type(arg))
Exemplo n.º 4
0
    def __getitem__(self, index):
        if isinstance(index, slice):
            start, stop, step, sln = utils.standard_python_slice(
                len(self), index)
            start += self._start
            stop += self._start
            if sln == 0:
                return RangeIndex(0)
            else:
                return index_from_range(start, stop, step)

        elif isinstance(index, int):
            index = utils.normalize_index(index, len(self))
            index += self._start
            return index
        elif isinstance(index, (list, np.ndarray)):
            index = np.array(index)
            index = rmm.to_device(index)

        if isinstance(index, (DeviceNDArray)):
            return self.take(index)
        else:
            raise ValueError(index)