docs: def bootstrap_histogram_1D(
          values, intervals, uncertainties=None,
          normalisation=False, number_bootstraps=None, boundaries=None):
      '''
      Bootstrap samples a set of vectors
  
      :param numpy.ndarray values:
          The data values
      :param numpy.ndarray intervals:
          The bin edges
      :param numpy.ndarray uncertainties:
          The standard deviations of each observation
      :param bool normalisation:
          If True then returns the histogram as a density function
      :param int number_bootstraps:
          Number of bootstraps
      :param tuple boundaries:
          (Lower, Upper) bounds on the data
  
      :param returns:
          1-D histogram of data
  
      '''
      if not number_bootstraps or np.all(np.fabs(uncertainties < PRECISION)):
          # No bootstraps or all uncertaintes are zero - return ordinary
          # histogram
          #output = np.histogram(values, intervals)[0]
          output = hmtk_histogram_1D(values, intervals)
          if normalisation:
              output = output / float(np.sum(output))
          else:
              output = output
          return output
      else:
          temp_hist = np.zeros([len(intervals) - 1, number_bootstraps],
                               dtype=float)
          for iloc in range(0, number_bootstraps):
              sample = sample_truncated_gaussian_vector(values,
                                                        uncertainties,
                                                        boundaries)
              #output = np.histogram(sample, intervals)[0]
              output = hmtk_histogram_1D(sample, intervals)
              temp_hist[:, iloc] = output
          output = np.sum(temp_hist, axis=1)
          if normalisation:
              output = output / float(np.sum(output))
          else:
              output = output / float(number_bootstraps)
          return output