植物中的疾病严重程度水平在0(无疾病)至10(严重疾病)的范围内。例如,大约12种植物的疾病水平如下:
(1.7,3.7,5.3,7.3,2.3,3.7,5.7,7.3,1,4,5.7,6.7)
使用另一种方法为相同的植物分配以下值:
(186.6377,207.7993,179.8552,225.7226,212.0066,215.8321,218.337,199.9707,179.5959,203.2275,212.2286,212.5489)
如何将第二组值转换为0到10比例,以便比较分配给每个工厂的值? 我见过的最近的是the scale function. Unfortunately, it deals with ranges of 0 to 1
答案 0 :(得分:0)
平均每组,并通过乘以它将其缩放到10。
set2 = [186.6377, 207.7993, 179.8552, 225.7226, 212.0066, 215.8321, 218.337, 199.9707, 179.5959, 203.2275, 212.2286, 212.5489]
cset2 = [10*x/max(set2) for x in set2]
cset2
的内容?
[8.268454288582534,
9.205958995687627,
7.967974850546644,
10.0,
9.392351496925873,
9.561829431346263,
9.672801925903741,
8.859135062240112,
7.95648729901215,
9.003418355096032,
9.40218657768429,
9.41637656131907]
答案 1 :(得分:0)
您可以制作转换功能:
def convert(x,a,b,c=0,d=1):
"""converts values in the range [a,b] to values in the range [c,d]"""
return c + float(x-a)*float(d-c)/(b-a)
例如:
>>> convert(215.8321,170,230,0,10)
7.638683333333333
(将170
和230
替换为最小值/最大值,但问题说明中未提供这些值。