Python中的数学比率

时间:2015-03-03 16:49:29

标签: python math

我在一年前写过这篇文章,虽然它符合它的目的,但我想知道是否有一个比我聪明的人能提出改善效率的方法。

def tempcolor(mintemp=0,maxtemp=32,mincolor=44000,maxcolor=3200,ctemp=10,c=0):
    tempdiff=(mincolor-maxcolor) / (maxtemp-mintemp)
    ccolor=(ctemp-mintemp) * tempdiff
    ctouse=(mincolor-ccolor)
    #print ctouse
    return ctouse;

有一系列数字(mintemp到maxtemp)。当调用ctouse时,我们计算比率,然后将相同的比率应用于其他数字范围(mincolor和maxcolor)。

我在另一个脚本中使用它,只是想知道是否有人有任何关于使它更整洁的建议。或者更准确!

由于

威尔

1 个答案:

答案 0 :(得分:0)

我将假设您很少或永远不会更改mintemp,maxtemp,mincolor,maxcolor的给定值。

我能看到的唯一效率改进是预先计算比率 - 比如

def make_linear_interpolator(x0, x1, y0, y1):
    """
    Return a function to convert x in (x0..x1) to y in (y0..y1)
    """
    dy_dx = (y1 - y0) / float(x1 - x0)
    def y(x):
        return y0 + (x - x0) * dy_dx
    return y

color_to_temp = make_linear_interpolator(0, 32, 44000, 3200)

color_to_temp(10)    # => 32150.0