规范化列表 python

Normalizing list of list python

我有一个这样的列表:

> x =[[87.46853791525385, 0.28074670571010246], [126.11314768167513, 0.3977334471784522],[122.58453149726517, 0.4361537416813799],[83.34642493277082, 0.3468989093276901],  [99.20805518615764, 0.2667645066606457],...]

每个内部列表的第一个位置代表一个变量,而每个内部列表的第二个位置代表另一个变量。

我想使用以下公式对每个变量进行归一化: m_s = ( m0 -min(m0) ) / ( max(m0) - min(m0) )

其中m_s为参数的换算值,m_o为参数的实际值。 Min是一个变量的最小变量,max是最大变量。

如果我没看错你的问题,你想对列表中的每个变量应用缩放函数 x:

x = [[87.46853791525385, 0.28074670571010246], [126.11314768167513, 0.3977334471784522],[122.58453149726517, 0.4361537416813799],[83.34642493277082, 0.3468989093276901],  [99.20805518615764, 0.2667645066606457]]

min_var1 = min(val for (val, _) in x)
max_var1 = max(val for (val, _) in x)

min_var2 = min(val for (_, val) in x)
max_var2 = max(val for (_, val) in x)

# m_s = ( m0 -min(m0) ) / ( max(m0) - min(m0) )
func = lambda x, min_x, max_x: (x - min_x) / (max_x - min_x)

x = [[func(var1, min_var1, max_var1), func(var2, min_var2, max_var2)] for var1, var2 in x]

from pprint import pprint
pprint(x)

打印:

[[0.09638599166658474, 0.08254479127758767],
 [1.0, 0.773183375565603],
 [0.9174915458187556, 1.0],
 [0.0, 0.473078484929904],
 [0.37088720467347935, 0.0]]