Well, you could "z-score" the sample, by subtracting the sample mean and then dividing by the sample standard deviation:
x = np.random.normal(0, 1, size=660)
x = (x - x.mean()) / x.std()
That will make your vector have a mean of 0 and a standard deviation of 1. But that doesn't mean you will have "perfectly gaussian random numbers." I don't think that's really a concept that makes sense.
It would be helpful to know what application you want to use this for, maybe then it would be easier to suggest alternatives.