Yes, a random state is enough.
>>> X, y = np.arange(10).reshape((5, 2)), range(5) >>> X2 = np.hstack((X,X)) >>> X_train, X_test, _, _ = train_test_split(X,y, test_size=0.33, random_state=42) >>> X_train2, X_test2, _, _ = train_test_split(X2,y, test_size=0.33, random_state=42) >>> X_train array([[4, 5], [0, 1], [6, 7]]) >>> X_train2 array([[4, 5, 4, 5], [0, 1, 0, 1], [6, 7, 6, 7]]) >>> X_test array([[2, 3], [8, 9]]) >>> X_test2 array([[2, 3, 2, 3], [8, 9, 8, 9]])