Python 基于平均值对长向量进行下采样

Python 基于平均值对长向量进行下采样,python,Python,问题: 我有一个长向量,我想对它进行下采样。 通过下采样,我的意思是取长向量,并通过平均部分来缩短它 我正在使用Python(2.7) 例如,我有一个单声道音频文件,它是在44100Hz下录制的。 录制长度为10秒,提供长度为441000的向量 假设我想将其采样降至8KHz。输出向量应80000长 当然,下采样会丢失很多信息 建议的解决方案: 抽样比率为: R = 44100 / 8000 = 5.5125 因此,我想对原始向量的每一个5.5125样本进行平均,并将其转化为一个数字 是否有实

问题:

我有一个长向量,我想对它进行下采样。 通过下采样,我的意思是取长向量,并通过平均部分来缩短它

我正在使用Python(2.7)

例如,我有一个单声道音频文件,它是在
44100Hz
下录制的。 录制长度为
10秒
,提供长度为441000的向量

假设我想将其采样降至
8KHz
。输出向量应
80000长

当然,下采样会丢失很多信息

建议的解决方案:

抽样比率为:

R = 44100 / 8000 = 5.5125
因此,我想对原始向量的每一个
5.5125
样本进行平均,并将其转化为一个数字

  • 是否有实现此功能的库函数(即来自Numpy、statistics等Python库)

  • 如果没有,你能推荐一个简洁的方法来运行它吗?如何计算非整数索引(
    5.5125
    )的平均值

  • 如何将原始向量整齐地“分解”为
    5.5125
    大小的较小部分


如上所述,重采样可能很棘手,并可能引入不必要的噪声。因此,最好查阅有关算法和/或使用/依赖scipy和类似LIBSW的DSP书籍,而不仅仅是重新采样8820 Hz,这是一个5倍?