code: def array_shift(a, n, fill="average"):
      
  
      new_a = _n.array(a)
  
      if n==0: return new_a
  
      fill_array = _n.array([])
      fill_array.resize(_n.abs(n))
  
      # fill up the fill array before we do the shift
      if   fill is "average": fill_array = 0.0*fill_array + _n.average(a)
      elif fill is "wrap" and n >= 0:
          for i in range(0,n): fill_array[i] = a[i-n]
      elif fill is "wrap" and n < 0:
          for i in range(0,-n): fill_array[i] = a[i]
      else:   fill_array = 0.0*fill_array + fill
  
      # shift and fill
      if n > 0:
          for i in range(n, len(a)): new_a[i] = a[i-n]
          for i in range(0, n):      new_a[i] = fill_array[i]
      else:
          for i in range(0, len(a)+n): new_a[i] = a[i-n]
          for i in range(0, -n):       new_a[-i-1] = fill_array[-i-1]
  
      return new_a
docs: This will return an array with all the elements shifted forward in index by n.
  
      a is the array
      n is the amount by which to shift (can be positive or negative)
  
      fill="average"      fill the new empty elements with the average of the array
      fill="wrap"         fill the new empty elements with the lopped-off elements
      fill=37.2           fill the new empty elements with the value 37.2