code: def copy(data, start=0, stop=None, blen=None, storage=None, create='array',
           **kwargs):
      
  
      # setup
      storage = _util.get_storage(storage)
      blen = _util.get_blen_array(data, blen)
      if stop is None:
          stop = len(data)
      else:
          stop = min(stop, len(data))
      length = stop - start
      if length < 0:
          raise ValueError('invalid stop/start')
  
      # copy block-wise
      out = None
      for i in range(start, stop, blen):
          j = min(i+blen, stop)
          block = data[i:j]
          if out is None:
              out = getattr(storage, create)(block, expectedlen=length, **kwargs)
          else:
              out.append(block)
  
      return out
docs: Copy `data` block-wise into a new array.