code: def integrate_data(xdata, ydata, xmin=None, xmax=None, autozero=0):
      
  
      # sort the arrays and make sure they're numpy arrays
      [xdata, ydata] = sort_matrix([xdata,ydata],0)
      xdata = _n.array(xdata)
      ydata = _n.array(ydata)
  
      if xmin is None: xmin = min(xdata)
      if xmax is None: xmax = max(xdata)
  
      # find the index range
      imin = xdata.searchsorted(xmin)
      imax = xdata.searchsorted(xmax)
  
      xint = [xdata[imin]]
      yint = [0]
  
      # get the autozero
      if autozero >= 1:
          zero = _n.average(ydata[imin:imin+int(autozero)])
          ydata = ydata-zero
  
      for n in range(imin+1,imax):
          if len(yint):
              xint.append(xdata[n])
              yint.append(yint[-1]+0.5*(xdata[n]-xdata[n-1])*(ydata[n]+ydata[n-1]))
          else:
              xint.append(xdata[n])
              yint.append(0.5*(xdata[n]-xdata[n-1])*(ydata[n]+ydata[n-1]))
  
      return _n.array(xint), _n.array(yint)
docs: Numerically integrates up the ydata using the trapezoid approximation.
      estimate the bin width (scaled by the specified amount).
      Returns (xdata, integrated ydata).
  
      autozero is the number of data points to use as an estimate of the background
      (then subtracted before integrating).