(self, reduced_extra, lefti, righti, rightu)
return table
Join (horizontally) self.data and reduced_extra, taking the pairs
        of rows given in indices
Join (horizontally) self.data and reduced_extra, taking the pairs
        of rows given in indices
Join ( horizontally ) self . data and reduced_extra taking the pairs of rows given in indices
def _join_table_by_indices(self, reduced_extra, lefti, righti, rightu):
        """Join (horizontally) self.data and reduced_extra, taking the pairs
        of rows given in indices"""
        if not lefti.size:
            return None
        lt_dom = self.data.domain
        xt_dom = reduced_extra.domain
        domain = self._domain_rename_duplicates(
            lt_dom.attributes + xt_dom.attributes,
            lt_dom.class_vars + xt_dom.class_vars,
            lt_dom.metas + xt_dom.metas)
        X = self._join_array_by_indices(
            self.data.X, reduced_extra.X, lefti, righti)
        Y = self._join_array_by_indices(
            np.c_[self.data.Y], np.c_[reduced_extra.Y], lefti, righti)
        string_cols = [i for i, var in enumerate(domain.metas) if var.is_string]
        metas = self._join_array_by_indices(
            self.data.metas, reduced_extra.metas, lefti, righti, string_cols)
        if rightu is not None:
            # This domain is used for transforming the extra rows for outer join
            # It must use the original - not renamed - variables from right, so
            # values are copied,
            # but new domain for the left, so renamed values are *not* copied
            right_domain = Orange.data.Domain(
                domain.attributes[:len(lt_dom.attributes)] + xt_dom.attributes,
                domain.class_vars[:len(lt_dom.class_vars)] + xt_dom.class_vars,
                domain.metas[:len(lt_dom.metas)] + xt_dom.metas)
            extras = self.extra_data[rightu].transform(right_domain)
            X = np.vstack((X, extras.X))
            extras_Y = extras.Y
            if extras_Y.ndim == 1:
                extras_Y = extras_Y.reshape(-1, 1)
            Y = np.vstack((Y, extras_Y))
            metas = np.vstack((metas, extras.metas))
        table = Orange.data.Table.from_numpy(domain, X, Y, metas)
        table.name = getattr(self.data, 'name', '')
        table.attributes = getattr(self.data, 'attributes', {})
        if rightu is not None:
            table.ids = np.hstack(
                (self.data.ids, self.extra_data.ids[rightu]))
        else:
            table.ids = self.data.ids[lefti]

        return table
def _join_table_by_indices ( self , reduced_extra , lefti , righti , rightu ) : if not lefti . size : return None lt_dom = self . data . domain xt_dom = reduced_extra . domain domain = self . _domain_rename_duplicates ( lt_dom . attributes + xt_dom . attributes , lt_dom . class_vars + xt_dom . class_vars , lt_dom . metas + xt_dom . metas ) X = self . _join_array_by_indices ( self . data . X , reduced_extra . X , lefti , righti ) Y = self . _join_array_by_indices ( np . c_ [ self . data . Y ] , np . c_ [ reduced_extra . Y ] , lefti , righti ) string_cols = [ i for i , var in enumerate ( domain . metas ) if var . is_string ] metas = self . _join_array_by_indices ( self . data . metas , reduced_extra . metas , lefti , righti , string_cols ) if rightu is not None : # This domain is used for transforming the extra rows for outer join # It must use the original - not renamed - variables from right, so # values are copied, # but new domain for the left, so renamed values are *not* copied right_domain = Orange . data . Domain ( domain . attributes [ : len ( lt_dom . attributes ) ] + xt_dom . attributes , domain . class_vars [ : len ( lt_dom . class_vars ) ] + xt_dom . class_vars , domain . metas [ : len ( lt_dom . metas ) ] + xt_dom . metas ) extras = self . extra_data [ rightu ] . transform ( right_domain ) X = np . vstack ( ( X , extras . X ) ) extras_Y = extras . Y if extras_Y . ndim == 1 : extras_Y = extras_Y . reshape ( - 1 , 1 ) Y = np . vstack ( ( Y , extras_Y ) ) metas = np . vstack ( ( metas , extras . metas ) ) table = Orange . data . Table . from_numpy ( domain , X , Y , metas ) table . name = getattr ( self . data , 'name' , '' ) table . attributes = getattr ( self . data , 'attributes' , { } ) if rightu is not None : table . ids = np . hstack ( ( self . data . ids , self . extra_data . ids [ rightu ] ) ) else : table . ids = self . data . ids [ lefti ] return table