[英]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.