繁体   English   中英

在 python 中将某个范围内的数字缩放到另一个范围

[英]Scaling a number between a certain range to that of another in python

有没有一种方法可以将可以说(a,b)范围之间的数字缩放到可以说(p,q)的不同范围?

在我的例子中,我有一个介于 0 到 1 之间的数字,即 (0, 1),并且想要对其进行缩放,使其位于 -1 到 1 的范围内,即 (-1, 1)。

例子 -:

# 1 will remain 1 if scaled.
scale(1, (0, 1), (-1, 1)) # => Returns 1
# 0.5 will be scaled to 0.
scale(0.5, (0, 1), (-1, 1)) # => Returns 0
# 0 will be scaled to -1.
scale(0, (0, 1), (-1, 1)) # => Returns -1

我能够在 - 上找到一些相关线程: 基于数学公式并且没有提到任何这样做的pythonic方式,其次我无法区分上限和下限以及max(x),min(x)

尝试这个:

def scale(x, srcRange, dstRange):
    return (x-srcRange[0])*(dstRange[1]-dstRange[0])/(srcRange[1]-srcRange[0])+dstRange[0]

当然,每个范围必须以(min, max)的形式给出。

在您的示例中,范围之一的形式为(max, min)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM