【发布时间】:2018-03-09 11:30:28
【问题描述】:
我正在尝试将一个数字范围转换为另一个范围(以指数方式)。我正在尝试在 python 中执行此操作。我没有数学背景(实际上也没有接受过计算机科学的正规教育),所以我会尽力清楚地解释我的问题。
假设我有以下范围 [A,B]:
[-10 , 25]
[-35 , -1]
[0 , 100]
我想将它们标准化为以下范围[C,D]:
[0 , 3]
[1 , 5]
[0 , 100]
我当然可以通过这个来规范化这些数字:
normalized = (x-min(x))/(max(x)-min(x))
这会给我一个介于 0 和 1 之间的(线性)归一化响应。
如果我想获得指数结果,我会通过函数提供标准化结果:
现在我的问题:
我想创建一个函数,我可以在其中输入两个范围([A,B] 和 [C,D])的极端情况:
A = C
B = D
结果呈指数增长。再说一次,我的数学在这里欠缺。上图示例在x = 100 时没有给出y = 100。所以我不知道如何确定考虑改变输入的指数公式。
简而言之:我想选择不同强度的指数增长,同时使用不同的变量作为输入,但当x = max_input 和x = min_input 时总是有y = max_result 和y = min_result。
一个例子:
Input:
# Range of input values
AB = [0,100]
# Range of output values
CD = [0,1000]
# Math function for exponential
formula_input = # Some formula made with range [0,100] on both X and Y
x1 = 10
x2 = 20
x3 = 50
x4 = 90
Output:
formula = 1.072^x
y1 = 2.004
y2 = 4.017
y3 = 32.34
y4 = 521.832
我希望这个问题足够清楚。提前感谢您的帮助!
【问题讨论】: