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)
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)
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))
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)