def METHOD_NAME(cls, func, partitions, **kwargs):
    """
    Apply `func` to a list of remote partitions from `partitions`.
    Parameters
    ----------
    func : callable
        The function to apply.
    partitions : np.ndarray
        NumPy array with partitions.
    **kwargs : dict
        Additional keywords arguments to be passed in `func`.
    Returns
    -------
    np.ndarray
        A NumPy array of ``cuDFOnRayDataframePartition`` objects.
    Notes
    -----
    This preprocesses the `func` first before applying it to the partitions.
    """
    preprocessed_map_func = cls.preprocess_func(func)
    key_futures = RayWrapper.materialize(
        [
            partition.apply(preprocessed_map_func, **kwargs)
            for partition in partitions
        ]
    )
    gpu_managers = [partition.get_gpu_manager() for partition in partitions]
    return cls._create_partitions(key_futures, gpu_managers)