如何将一个值映射到另一个不同的变化值

时间:2019-08-01 17:44:11

标签: python function

我想知道如何基本连接两个数字。例如:如果我有一个从0到10的数字,那么我想将其“映射”到另一个从0到100的值,这意味着如果原始数字将其值更改为1,那么我的数字将以相同的百分比。像这样:原始数字= 1,那么我的数字应该是10,如果我是2,然后是20,依此类推。

是否有为此功能,或者我必须手动对其进行编码?

具体示例:

day_night_value = 5 # 0 = midnight; 10= noon
threshold = ?? # This should equal to 249 if it is noon, and 134 if it is midnight

有帮助吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

这通常称为"map range" equation

上面的Rosetta Stone链接给出了以下definition for Python

def maprange( a, b, s):
    (a1, a2), (b1, b2) = a, b
    return  b1 + ((s - a1) * (b2 - b1) / (a2 - a1))

以其用法为例:

for s in range(11):
    print("%2g maps to %g" % (s, maprange( (0, 10), (-1, 0), s)))

您当然可以更改定义,以使您不必为范围传递元组。

这也是通常需要的功能,许多图形库都包含它的定义。

相关问题