code: def _allocate_output(self, windows, shape):
          
          missing_value = self.missing_value
          outputs = self.outputs
          if outputs is not NotSpecified:
              out = recarray(
                  shape,
                  formats=[self.dtype.str] * len(outputs),
                  names=outputs,
              )
              out[:] = missing_value
          else:
              out = full(shape, missing_value, dtype=self.dtype)
          return out
docs: Allocate an output array whose rows should be passed to `self.compute`.
  
          The resulting array must have a shape of ``shape``.
  
          If we have standard outputs (i.e. self.outputs is NotSpecified), the
          default is an empty ndarray whose dtype is ``self.dtype``.
  
          If we have an outputs tuple, the default is an empty recarray with
          ``self.outputs`` as field names. Each field will have dtype
          ``self.dtype``.
  
          This can be overridden to control the kind of array constructed
          (e.g. to produce a LabelArray instead of an ndarray).