def random_sphere_numpy(shape):
    n = np.random.normal(size=shape)
    proj_shape = tuple(([n.shape[0]] + [1 for _ in range((len(shape) - 1))]))
    return (n / np.linalg.norm(n.reshape((n.shape[0], (- 1))), axis=1).reshape(proj_shape))
def random_sphere_numpy(shape):
    n = np.random.normal(size=shape)
    proj_shape = tuple(([n.shape[0]] + [1 for _ in range((len(shape) - 1))]))
    return (n / np.linalg.norm(n.reshape((n.shape[0], (- 1))), axis=1).reshape(proj_shape))