def slice(self, k=None, rows=None, cols=None): ''' Slice out a part of the SVD results, fewer svals, rows, and/or columns. k : int - how many svals to keep. None -> keep all. rows : [obj] - a list of rows to keep. None -> keep all. cols : [obj] - a list of cols to keep. None -> keep all. ''' row_labels = self.u.label_list(0) col_labels = self.v.label_list(0) if rows is not None: rows = map(row_labels.index, rows) row_labels = indexable_set(rows, len(rows)) if cols is not None: cols = map(col_labels.index, rows) col_labels = indexable_set(cols, len(cols)) return LabeledSVD2DResults.layer_on(super(LabeledSVD2DResults, self).slice(k, rows, cols), [row_labels, col_labels])
def slice(self, k=None, rows=None, cols=None): """ Slice out a part of the SVD results, fewer svals, rows, and/or columns. k : int - how many svals to keep. None -> keep all. rows : [obj] - a list of rows to keep. None -> keep all. cols : [obj] - a list of cols to keep. None -> keep all. """ row_labels = self.u.label_list(0) col_labels = self.v.label_list(0) if rows is not None: rows = map(row_labels.index, rows) row_labels = indexable_set(rows, len(rows)) if cols is not None: cols = map(col_labels.index, rows) col_labels = indexable_set(cols, len(cols)) return LabeledSVD2DResults.layer_on( super(LabeledSVD2DResults, self).slice(k, rows, cols), [row_labels, col_labels] )
def __init__(self, tensor, label_lists=None): View.__init__(self, tensor) shape = tensor.shape if label_lists is None: label_lists = [None]*self.tensor.ndim if tensor.ndim != len(label_lists): raise IndexError('Number of label lists (%d) does not match number of dimensions (%s)' % (len(label_lists), tensor.ndim)) self._labels = [indexable_set(l, shape[mode]) for mode, l in enumerate(label_lists)] self.tensor.ensure_index_is_valid(tuple(len(label_list)-1 for label_list in self._labels))
def __init__(self, tensor, label_lists=None): View.__init__(self, tensor) shape = tensor.shape if label_lists is None: label_lists = [None] * self.tensor.ndim if tensor.ndim != len(label_lists): raise IndexError( "Number of label lists (%d) does not match number of dimensions (%s)" % (len(label_lists), tensor.ndim) ) self._labels = [indexable_set(l, shape[mode]) for mode, l in enumerate(label_lists)] self.tensor.ensure_index_is_valid(tuple(len(label_list) - 1 for label_list in self._labels))