You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个采样向量的所有数值重映射到[-1, 1]区间范围内

向量数值重映射到[-1,1]区间的实现方案

通用映射公式

所有任意范围的数值向量要映射到[-1,1]区间,都可以用变形的Min-Max归一化方法,公式如下:
归一化后数值 = 2 * (原始数值 - 向量最小值) / (向量最大值 - 向量最小值) - 1

  • 计算逻辑是先把原始数值映射到[0,1]区间,再通过线性变换拉伸到[-1,1]区间
  • 遇到向量所有数值完全相同的极端情况,可统一映射为0,避免除以0报错

针对你给出的两个向量的计算

采样向量1(取值范围[-0.8, 0.8])

代入参数到通用公式,可简化得到直接计算式:归一化后数值 = 原始数值 / 0.8

  • 原向量样例:[ -0.8, 0.7 , -0.23, 0.56, 0.456, -0.344, -0.75, 0.8]
  • 映射后结果:[-1.0, 0.875, -0.2875, 0.7, 0.57, -0.43, -0.9375, 1.0]

采样向量2(取值范围[0.2, 0.3])

代入参数到通用公式,可简化得到直接计算式:归一化后数值 = 20 * 原始数值 - 5

  • 原向量样例:[ 0.2, 0.23, 0.21, 0.29, 0.26, 0.25, 0.3]
  • 映射后结果:[-1.0, -0.4, -0.8, 0.8, 0.2, 0.0, 1.0]

通用代码实现(Python版本)

def remap_to_minus1_1(input_vector):
    vec_min = min(input_vector)
    vec_max = max(input_vector)
    # 处理所有元素相同的极端场景
    if vec_max == vec_min:
        return [0.0 for _ in input_vector]
    return [2 * (x - vec_min) / (vec_max - vec_min) - 1 for x in input_vector]

# 测试样例
if __name__ == "__main__":
    vector1 = [-0.8, 0.7 , -0.23, 0.56, 0.456, -0.344, -0.75, 0.8]
    vector2 = [0.2, 0.23,  0.21,  0.29, 0.26, 0.25, 0.3]
    print(remap_to_minus1_1(vector1))
    print(remap_to_minus1_1(vector2))

内容的提问来源于stack exchange,提问作者coderide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:27:03