【问题标题】:Normalize values between -1 and 1 inclusive标准化 -1 和 1 之间的值(含)
【发布时间】:2023-03-28 13:46:01
【问题描述】:

我正在尝试使用 Numpy 在 python 中生成一个 .wav 文件。我的电压范围在 0-5V 之间,我需要在 -1 和 1 之间对其进行标准化,以便在 .wav 文件中使用它们。

我看到this 网站使用 numpy 生成 wav 文件,但用于规范化的算法不再可用。

谁能解释我将如何在我的树莓派上用 Python 生成这些值。

【问题讨论】:

标签: python numpy normalization


【解决方案1】:

这不只是一个简单的计算吗?除以最大值的一半和负1:

In [12]: data=np.linspace(0,5,21)

In [13]: data
Out[13]: 
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ,
        2.25,  2.5 ,  2.75,  3.  ,  3.25,  3.5 ,  3.75,  4.  ,  4.25,
        4.5 ,  4.75,  5.  ])

In [14]: data/2.5-1.
Out[14]: 
array([-1. , -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1,  0. ,
        0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])

【讨论】:

    【解决方案2】:

    您可以在sklearn.preprocessing.StandardScaler 中使用 fit_transform 方法。此方法将从您的数据中删除平均值并将您的数组缩放为单位方差 (-1,1)

    from sklearn.preprocessing import StandardScaler
    data = np.asarray([[0, 0, 0],
         [1, 1, 1],
         [2,1, 3]])
    data = StandardScaler().fit_transform(data)
    

    如果您打印出数据,您现在将拥有:

    [[-1.22474487 -1.41421356 -1.06904497]
    [ 0.          0.70710678 -0.26726124]
    [ 1.22474487  0.70710678  1.33630621]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2017-04-10
      • 2016-11-07
      相关资源
      最近更新 更多