【问题标题】:Normalize an array of floats into a certain range with keeping sign in Python将浮点数组规范化到一定范围内,并在 Python 中保持符号
【发布时间】:2021-11-19 23:30:06
【问题描述】:

我有一组浮点数,可以是负数也可以是正数:

[-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]

我需要将此数组规范化为这样的范围 [-5,5]。 重点是,我需要保留他们的符号(如果它是正的,则应该映射为正,反之亦然)

【问题讨论】:

  • 好吧,那么你必须定义normalize。底层转换通常是线性的,所以当然,如果你的最大值和最小值之和不为零,一些数字的符号就会改变。

标签: python arrays mapping normalization


【解决方案1】:

假设以下 numpy 数组:

import numpy as np
a = np.array([-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21])

您希望数据跨越 [-5, 5] 并保持其符号,因此以零为中心。这意味着数据的绝对最大值将是(其原始符号的)边界之一。因此,一个简单的转换是使用这个绝对最大值进行缩放

scaled_a = a/abs(a).max()*5

输出:

array([-5.        , -2.70212766, -4.38297872, -2.40425532, -1.95744681,
       -0.95744681,  0.42553191,  1.70212766,  2.34042553,  3.19148936,
        3.61702128,  4.46808511])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多