code: def from_array(self, array, grid='DH', copy=True):
          
          if _np.iscomplexobj(array):
              kind = 'complex'
          else:
              kind = 'real'
  
          if type(grid) != str:
              raise ValueError('grid must be a string. ' +
                               'Input type was {:s}'
                               .format(str(type(grid))))
  
          if grid.upper() not in set(['DH', 'GLQ']):
              raise ValueError(
                  "grid must be 'DH' or 'GLQ'. Input value was {:s}."
                  .format(repr(grid))
                  )
  
          for cls in self.__subclasses__():
              if cls.istype(kind) and cls.isgrid(grid):
                  return cls(array, copy=copy)
docs: Initialize the class instance from an input array.
  
          Usage
          -----
          x = SHGrid.from_array(array, [grid, copy])
  
          Returns
          -------
          x : SHGrid class instance
  
          Parameters
          ----------
          array : ndarray, shape (nlat, nlon)
              2-D numpy array of the gridded data, where nlat and nlon are the
              number of latitudinal and longitudinal bands, respectively.
          grid : str, optional, default = 'DH'
              'DH' or 'GLQ' for Driscoll and Healy grids or Gauss Legendre
              Quadrature grids, respectively.
          copy : bool, optional, default = True
              If True (default), make a copy of array when initializing the class
              instance. If False, initialize the class instance with a reference
              to array.