【发布时间】:2019-12-06 06:19:38
【问题描述】:
我有一个数字数组,可以转换为百分比([0 .. 1] 范围内的值)。然后我将其转换为灰色。
例子:
percentage = nums/float(nums.max())
问题是大多数值都是带有几个大数字的小数字。这导致大部分 % 在 0.01 左右。 结果是这转化为~~白色,在绘图时变得不可见。 顺便说一句,我必须保留所有的价值观。
我试图缩小异常值,但即使这样也无济于事;(
colors[abs(colors - np.mean(colors)) > 2 * np.std(colors)] = colors.mean() + 2 * np.std(colors)
c = colors/float(colors.max()) #convert to percentage
这样做的目的是将异常值缩小到平均值的 2std。
我认为我需要的是某种“逐步”函数,它将值分组以使它们均匀缩放 在 0 .. 1 范围内,以便每个点都接收可见颜色,但仍保持一定的对比度,以便区分值。
PS> 范围可能是 0.1 到 1 !
=====
到目前为止,这是某种解决方案:
c += 0.15 * (1-c)
【问题讨论】:
-
也许你应该阅读一下Histogram Equalization
-
如果它工作正常,您能接受答案并关闭这个问题吗?如果您找到了另一个更适合您需求的解决方案,如果您愿意在单独的答案中分享它,我们也将不胜感激。谢谢。
标签: python numpy scale uniform