<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def separate_signals(data, w_idx=[1, 2, 3]):
 """ Separate the water and non-water data from each other Parameters data : nd array FID signal with shape (transients, echos, coils, time-points) w_idx : list (optional) Indices into the 'transients' (0th) dimension of the data for the signal that is not water-suppressed Returns ------- water_data, w_supp_data : tuple The first element is an array with the transients in the data in which no water suppression was applied. The second element is an array with the transients in which water suppression was applied """

   # The transients are the first dimension in the data
   idxes_w = np.zeros(data.shape[0], dtype=bool)
   idxes_w[w_idx] = True
   # Data with water unsuppressed (first four transients - we throw away the
   # first one which is probably crap):
   w_data = data[np.where(idxes_w)]
   # Data with water suppressed (the rest of the transients):
   idxes_nonw = np.zeros(data.shape[0], dtype=bool)
   idxes_nonw[np.where(~idxes_w)] = True
   idxes_nonw[0] = False
   w_supp_data = data[np.where(idxes_nonw)]

   return w_data, w_supp_data