<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def reduce(self, cross_series_reducer, *group_by_fields):
 """Copy the query and add cross-series reduction. Cross-series reduction combines time series by aggregating their data points. For example, you could request an aggregated time series for each combination of project and zone as follows:: from google.cloud.monitoring import enums query = query.reduce(enums.Aggregation.Reducer.REDUCE_MEAN, 'resource.project_id', 'resource.zone') :type cross_series_reducer: str or :class:`~google.cloud.monitoring_v3.gapic.enums.Aggregation.Reducer` :param cross_series_reducer: The approach to be used to combine time series. For example: :data:`Reducer.REDUCE_MEAN`. See :class:`~google.cloud.monitoring_v3.gapic.enums.Aggregation.Reducer` and the descriptions of the `supported reducers`_. :type group_by_fields: strs :param group_by_fields: Fields to be preserved by the reduction. For example, specifying just ``"resource.zone"`` will result in one time series per zone. The default is to aggregate all of the time series into just one. :rtype: :class:`Query` :returns: The new query object. .. _supported reducers: https://cloud.google.com/monitoring/api/ref_v3/rest/v3/\ projects.timeSeries/list#Reducer """

        new_query = copy.deepcopy(self)
        new_query._cross_series_reducer = cross_series_reducer
        new_query._group_by_fields = group_by_fields
        return new_query