def shape_from_elems(*elems): if len(elems) == 0: return 1, return np.broadcast(*[np.ones(elem.shape) for elem in elems]).shape