def simple_split(X, train_len=None, test_len=None, valid_len=None):
    """
    Split the data in train-test-validation using the given dimensions for each set.
    :param X: numpy.array or pandas.DataFrame
        Univariate data of shape (n_samples, n_features)
    :param train_len: int
        Length in number of data points (measurements) for training.
        If None then allow_muliple_split cannot be True.
    :param test_len: int
        Length in number of data points (measurements) for testing
    :param valid_len: int
        Length in number of data points (measurements) for validation
    :return: list
        train: numpy.array, shape=(train_len, n_features)
        validation: numpy.array, shape=(valid_len, n_features)
        test: numpy.array, shape=(test_len, n_features)
    """
    if test_len is None:
        raise ValueError('test_len cannot be None.')
    if train_len is None:
        train_len = X.shape[0] - test_len
        valid_len = 0
    if valid_len is None:
        valid_len = X.shape[0] - train_len - test_len
    return X[:train_len], \
           X[train_len:train_len+valid_len], \
           X[train_len+valid_len:]