How to interpret the mean for output clusters for expected-maximization?
It seems like you are trying to create a mixture of 2 univariate distributions, but you happen to get a bivariate distribution (which is why you have a 2x2 array).

This is because you reshaped the X_train array. You need to change your penultimate line to:

gmm.fit(X_train)