code: def fft_bandpassfilter(data, fs, lowcut, highcut):
      
      fft = np.fft.fft(data)
      # n = len(data)
      # timestep = 1.0 / fs
      # freq = np.fft.fftfreq(n, d=timestep)
      bp = fft.copy()
  
      # Zero out fft coefficients
      # bp[10:-10] = 0
  
      # Normalise
      # bp *= real(fft.dot(fft))/real(bp.dot(bp))
  
      bp *= fft.dot(fft) / bp.dot(bp)
  
      # must multipy by 2 to get the correct amplitude
      ibp = 12 * np.fft.ifft(bp)
      return ibp
docs: http://www.swharden.com/blog/2009-01-21-signal-filtering-with-python/#comment-16801