def select_attrs(table, features, class_var=None, class_vars=None, metas=None): """ Select only ``attributes`` from the ``table``. """ if class_vars is None: domain = Domain(features, class_var) else: domain = Domain(features, class_var, class_vars=class_vars) if metas: domain.add_metas(metas) return Table(domain, table)
def take(table, indices, axis=0): """ Take values form the ``table`` along the ``axis``. """ indices = mask_to_indices(indices, (len(table), len(table.domain)), axis) if axis == 0: # Take the rows (instances) instances = [table[i] for i in indices] table = Table(instances) if instances else Table(table.domain) elif axis == 1: # Take the columns (attributes) variables = table.domain.variables vars = [variables[i] for i in indices] domain = Domain(vars, table.domain.class_var in vars) domain.add_metas(table.domain.get_metas()) table = Table(domain, table) return table
def join_domains(domain1, domain2): variables = domain1.variables + domain1.variables used_set = set() def used(vars): mask = [] for var in vars: mask.append(var not in used_set) used_set.add(var) used_mask1 = used(domain1.variables) used_mask2 = used(domain2.variables) if domain2.classVar: used_mask2[-1] = True variables = [v for v, used in zip(variables, used_mask1 + used_mask2)] joined_domain = Domain(variables, domain2.classVar) joined_domain.add_metas(domain1.get_metas()) joined_domain.add_metas(domain2.get_metas()) return joined_domain, used_mask1, used_mask2