def _expand_ellipsis(key, ndim):
    """Expand the slicing tuple if the Ellipsis object is present."""
    kl = list(key)
    ecount = kl.count(Ellipsis)
    if ecount > 1:
        raise IndexError('invalid index')
    if ecount < 1:
        return key
    e_index = kl.index(Ellipsis)
    kl_end = kl[e_index + 1:] if e_index < len(key) - 1 else []
    kl_beg = kl[:e_index]
    kl_middle = [slice(None)] * (ndim - len(kl_end) - len(kl_beg))
    return tuple(kl_beg + kl_middle + kl_end)
