code: def get_mask_selection(self, selection, out=None, fields=None):
          
  
          # refresh metadata
          if not self._cache_metadata:
              self._load_metadata()
  
          # check args
          check_fields(fields, self._dtype)
  
          # setup indexer
          indexer = MaskIndexer(selection, self)
  
          return self._get_selection(indexer=indexer, out=out, fields=fields)
docs: Retrieve a selection of individual items, by providing a Boolean array of the
          same shape as the array against which the selection is being made, where True
          values indicate a selected item.
  
          Parameters
          ----------
          selection : ndarray, bool
              A Boolean array of the same shape as the array against which the selection is
              being made.
          out : ndarray, optional
              If given, load the selected data directly into this array.
          fields : str or sequence of str, optional
              For arrays with a structured dtype, one or more fields can be specified to
              extract data for.
  
          Returns
          -------
          out : ndarray
              A NumPy array containing the data for the requested selection.
  
          Examples
          --------
          Setup a 2-dimensional array::
  
              >>> import zarr
              >>> import numpy as np
              >>> z = zarr.array(np.arange(100).reshape(10, 10))
  
          Retrieve items by specifying a maks::
  
              >>> sel = np.zeros_like(z, dtype=bool)
              >>> sel[1, 1] = True
              >>> sel[4, 4] = True
              >>> z.get_mask_selection(sel)
              array([11, 44])
  
          For convenience, the mask selection functionality is also available via the
          `vindex` property, e.g.::
  
              >>> z.vindex[sel]
              array([11, 44])
  
          Notes
          -----
          Mask indexing is a form of vectorized or inner indexing, and is equivalent to
          coordinate indexing. Internally the mask array is converted to coordinate
          arrays by calling `np.nonzero`.
  
          See Also
          --------
          get_basic_selection, set_basic_selection, set_mask_selection,
          get_orthogonal_selection, set_orthogonal_selection, get_coordinate_selection,
          set_coordinate_selection, vindex, oindex, __getitem__, __setitem__