code: def join_conn_groups( conns, descs, mat_ids, concat = False ):
      
  
      el = dict_from_keys_init( descs, list )
      for ig, desc in enumerate( descs ):
          el[desc].append( ig )
      groups = [ii for ii in el.values() if ii]
  ##     print el, groups
  
      descs_out, conns_out, mat_ids_out = [], [], []
      for group in groups:
          n_ep = conns[group[0]].shape[1]
  
          conn = nm.zeros( (0, n_ep), nm.int32 )
          mat_id = nm.zeros( (0,), nm.int32 )
          for ig in group:
              conn = nm.concatenate( (conn, conns[ig]) )
              mat_id = nm.concatenate( (mat_id, mat_ids[ig]) )
  
          if concat:
              conn = nm.concatenate( (conn, mat_id[:,nm.newaxis]), 1 )
          else:
              mat_ids_out.append( mat_id )
          conns_out.append( conn )
          descs_out.append( descs[group[0]] )
  
      if concat:
          return conns_out, descs_out
      else:
          return conns_out, descs_out, mat_ids_out
docs: Join groups of the same element type.