def joint_shape(*args):
    """Given a set of arrays, return the joint shape.

    Parameters
    ----------
    args : array-likes

    Returns
    -------
    tuple of int
        Joint shape.
    """
    if len(args) == 0:
        return ()
    shape = []
    shapes = [a.shape for a in args]
    ndim = args[0].ndim
    for i in range(ndim):
        shape.append(max([s[i] for s in shapes]))
    return tuple(shape)