ValueError: Cannot feed value of shape (3,) for Tensor 'X:0', which has shape '(1, 3)'
trainX has shape (2500, 3), so when you iterate over trainX you get values with shape (3,).  To match the shape of your placeholder "X", you need them to have shape (1, 3).  This can be accomplished with numpy.reshape:

# do this after loading trainX
trainX = trainX.reshape((-1, 1, 3))
# new shape: (2500, 1, 3)