Python Matplotlib:如何获得彩色贴图的反函数?

Python Matplotlib:如何获得彩色贴图的反函数?,python,matplotlib,colormap,inverse,Python,Matplotlib,Colormap,Inverse,在matplotlib中,colormaps是将0到1之间的数字映射到表示颜色的R、G、B和a分量的4元组的函数。如果我有这样一个颜色映射,比如说plt.cm.jet,有没有办法得到该函数的倒数,即将4元组映射回0到1之间的原始数字的函数 示例: import matplotlib.pyplot as plt import numpy as np values = np.random.rand(10, 10) # could be any array colors = plt.cm.jet(

在matplotlib中,colormaps是将0到1之间的数字映射到表示颜色的R、G、B和a分量的4元组的函数。如果我有这样一个颜色映射,比如说
plt.cm.jet
,有没有办法得到该函数的倒数,即将4元组映射回0到1之间的原始数字的函数

示例:

import matplotlib.pyplot as plt
import numpy as np

values = np.random.rand(10, 10)  # could be any array
colors = plt.cm.jet(values)
values2 = # ... somehow compute values from colors here
assert values == values2

假设映射是双射的,您可以创建一个dict,其中颜色是关键点

reversemap={}
for color,value in zip(colors,values):
    reversemap[color] = value

不幸的是,有几种颜色贴图不是双射的,在这种情况下,反转贴图将是不适定的。

谢谢,这将适用于我在问题中给出的特定示例。但是我正在寻找一个更通用的反函数,我可以在任何
颜色
数组上使用。@Fränki您手头有颜色和值之间的正向映射吗?如果是这样,您始终可以按所述生成反向映射。@John反向映射可能不正确unique@Jonas假设正向映射是双射的(我正在努力思考一个不可能的情况),反向映射将是唯一的。@John例如,颜色映射“flag”、“prism”或“hsv”不是双射的