<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def color_array_by_value(value, palette, denom, mask_zeros):
 """ Figure out the appropriate RGB or RGBA color for the given numerical value based on the palette, denom, and whether zeros should be masked. """

    if value == -1:  # sentinel value
        return -1

    if value == 0 and mask_zeros:  # This value is masked
        if type(palette) is list:
            return (1, 1, 1)
        return (1, 1, 1, 1)

    if type(palette) is list:  # This is a palette
        return palette[value]

    # This is continuous data so the palette is actually a colormap
    return palette(float(value)/float(denom))