One hot encoding for multiple label(trainy) in .fit() method?
So now I am totally confused how people use one hot encoding for
  target variable in practice? please help me out.


This mostly comes down to the tool you are using. Sklearn, which I assume you are using, does not use one hot encoded target variables. So your y should be of dimension (1600, 1) where the classes are 0, 1, 2 and 3. Instead of applying one hot encoding you can use a LabelEncoder to get it on the correct format.

I suspect the reason for your confusion comes from having seen deep learning frameworks such as Tensorflow and Keras. With them you always one hot encode your target variable.

Short answer:


Using sklearn: Label encode
Using deep learning: one hot encode