Python 将数据规格化为特定的值范围

Python 将数据规格化为特定的值范围,python,normalize,Python,Normalize,我是Python新手,有没有什么函数可以规范化数据 例如,我有一组范围为0-1的列表示例:[0.92323,0.7232322,093832,0.4344433] 我想将这些值标准化为范围0.25-0.50 谢谢你,你可以按照以下思路做某事: >>> l = [0.92323, 0.7232322, 0.93832, 0.4344433] >>> lower, upper = 0.25, 0.5 >>> l_norm = [lower + (

我是Python新手,有没有什么函数可以规范化数据

例如,我有一组范围为
0-1
的列表示例:
[0.92323,0.7232322,093832,0.4344433]

我想将这些值标准化为范围
0.25-0.50


谢谢你,

你可以按照以下思路做某事:

>>> l = [0.92323, 0.7232322, 0.93832, 0.4344433]
>>> lower, upper = 0.25, 0.5
>>> l_norm = [lower + (upper - lower) * x for x in l]
>>> l_norm
[0.4808075, 0.43080805, 0.48458, 0.35861082499999997]

您可以使用
sklearn.preprocessing
处理许多类型的预处理任务,包括规范化任务。

以下函数考虑一般情况:

def normalize(values, bounds):
    return [bounds['desired']['lower'] + (x - bounds['actual']['lower']) * (bounds['desired']['upper'] - bounds['desired']['lower']) / (bounds['actual']['upper'] - bounds['actual']['lower']) for x in values]
使用:

我选择了一个两级dict作为参数,但您可以以多种方式给出它,例如在两个独立的元组中,一个用于实际边界,另一个用于所需的,第一个元素是下限,第二个元素是上限:

def normalize(values, actual_bounds, desired_bounds):
    return [desired_bounds[0] + (x - actual_bounds[0]) * (desired_bounds[1] - desired_bounds[0]) / (actual_bounds[1] - actual_bounds[0]) for x in values]
使用:


很酷,我可以在数据框中做吗?我尝试过,但在应用程序中使用时出错。范围0,1如何?
def normalize(values, actual_bounds, desired_bounds):
    return [desired_bounds[0] + (x - actual_bounds[0]) * (desired_bounds[1] - desired_bounds[0]) / (actual_bounds[1] - actual_bounds[0]) for x in values]
   normalize(
    [0.92323, 0.7232322, 0.93832, 0.4344433],
    (0,1),
    (0.25,0.5)
) # [0.4808075, 0.43080805, 0.48458, 0.35861082499999997]

normalize(
    [5, 7.5, 10, 12.5, 15],
    (5,15),
    (1,2)
) # [1.0, 1.25, 1.5, 1.75, 2.0]