docs: def filter(self, mask):
          """
          Create a SiteCollection with only a subset of sites.
  
          :param mask:
              Numpy array of boolean values of the same length as the site
              collection. ``True`` values should indicate that site with that
              index should be included into the filtered collection.
          :returns:
              A new :class:`SiteCollection` instance, unless all the
              values in ``mask`` are ``True``, in which case this site collection
              is returned, or if all the values in ``mask`` are ``False``,
              in which case method returns ``None``. New collection has data
              of only those sites that were marked for inclusion in the mask.
          """
          assert len(mask) == len(self), (len(mask), len(self))
          if mask.all():
              # all sites satisfy the filter, return
              # this collection unchanged
              return self
          if not mask.any():
              # no sites pass the filter, return None
              return None
          # extract indices of Trues from the mask
          indices, = mask.nonzero()
          return self.filtered(indices)