<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_bootstrap_id_array(obs_id_per_sample):
 """ Creates a 2D ndarray that contains the 'bootstrap ids' for each replication of each unit of observation that is an the set of bootstrap samples. Parameters obs_id_per_sample : 2D ndarray of ints. Should have one row for each bootsrap sample. Should have one column for each observational unit that is serving as a new bootstrap observational unit. Returns ------- bootstrap_id_array : 2D ndarray of ints. Will have the same shape as `obs_id_per_sample`. Each element will denote the fake observational id in the new bootstrap dataset. """

    # Determine the shape of the object to be returned.
    n_rows, n_cols = obs_id_per_sample.shape
    # Create the array of bootstrap ids.
    bootstrap_id_array =\
        np.tile(np.arange(n_cols) + 1, n_rows).reshape((n_rows, n_cols))
    # Return the desired object
    return bootstrap_id_array