def _mode_array_map(mode_key, approx):
    """Return the mode_array in pycbc format for requested mode

    Parameters
    ----------
    mode_key: int/str
        Mode key e.g. 22/'22'.
    approx: str
        Waveform approximant.

    Returns
    -------
    mode_array: list
        pesummary.gw.waveform.fd_waveform appropriate list of lm modes.
    """
    mode_array_dict = {
        "22": [[2, 2], [2, -2]],
        "32": [[3, 2], [3, -2]],
        "21": [[2, 1], [2, -1]],
        "44": [[4, 4], [4, -4]],
        "33": [[3, 3], [3, -3]],
        "43": [[4, 3], [4, -3]],
    }
    # don't include negative m modes in Cardiff Phenom models
    # as will throw an error - they are automatically
    # added by these models. Note: Must include
    # negative m modes for phenomXHM.
    if approx in ["IMRPhenomPv3HM", "IMRPhenomHM"]:
        mode_array_idx = -1
    else:
        mode_array_idx = None

    return mode_array_dict[str(mode_key)][:mode_array_idx]