【发布时间】:2023-03-28 13:46:01
【问题描述】:
我正在尝试使用 Numpy 在 python 中生成一个 .wav 文件。我的电压范围在 0-5V 之间,我需要在 -1 和 1 之间对其进行标准化,以便在 .wav 文件中使用它们。
我看到this 网站使用 numpy 生成 wav 文件,但用于规范化的算法不再可用。
谁能解释我将如何在我的树莓派上用 Python 生成这些值。
【问题讨论】:
标签: python numpy normalization
我正在尝试使用 Numpy 在 python 中生成一个 .wav 文件。我的电压范围在 0-5V 之间,我需要在 -1 和 1 之间对其进行标准化,以便在 .wav 文件中使用它们。
我看到this 网站使用 numpy 生成 wav 文件,但用于规范化的算法不再可用。
谁能解释我将如何在我的树莓派上用 Python 生成这些值。
【问题讨论】:
标签: python numpy normalization
这不只是一个简单的计算吗?除以最大值的一半和负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. ])
【讨论】:
您可以在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]]
【讨论】: