code: def multi_arange(n):
      
      if n.ndim != 1:
          raise ValueError("n is supposed to be 1d array.")
  
      n_mask = n.astype(bool)
      n_cumsum = np.cumsum(n)
      ret = np.ones(n_cumsum[-1] + 1, dtype=int)
      ret[n_cumsum[n_mask]] -= n[n_mask]
      ret[0] -= 1
      return np.cumsum(ret)[:-1]
docs: By example:
      
          #    0  1  2  3  4  5  6  7  8
          n = [0, 0, 3, 0, 0, 2, 0, 2, 1]
          res = [0, 1, 2, 0, 1, 0, 1, 0]
  
      That is it is equivalent to something like this :
      
          hstack((arange(n_i) for n_i in n))
          
      This version seems quite a bit faster, at least for some
      possible inputs, and at any rate it encapsulates a task 
      in a function.