【发布时间】:2015-05-19 01:34:35
【问题描述】:
像
这样的数组很容易重新采样 a = numpy.array([1,2,3,4,5,6,7,8,9,10])
带有一个整数重采样因子。例如,因子为 2:
b = a[::2] # [1 3 5 7 9]
但是对于非整数重采样因子,它并不那么容易工作:
c = a[::1.5] # [1 2 3 4 5 6 7 8 9 10] => not what is needed...
应该是(使用线性插值):
[1 2.5 4 5.5 7 8.5 10]
或(通过取数组中最近的邻居)
[1 3 4 6 7 9 10]
如何使用非整数重采样因子对 numpy 数组进行重采样?
应用示例:音频信号重采样/重调
【问题讨论】:
-
期望的行为是什么?数组中的线性插值还是最近邻?
-
@wflynny 两者都可以工作......如果最近的邻居,可能甚至没有必要在内存中复制数组,只是数组的新“视图”可能是可能的,对吧? (最后我可能会使用线性插值以获得更好的质量)
-
可能必须使用
scipy.interpolate.interp1d或 scipy 中的其他插值例程之一 -
“重采样”是描述
::2索引方式的一种不同寻常的方式。numpy数组(和 Python 列表)主要不被视为样本(尽管它们的值可能代表其他东西的样本)。 -
@hpaulj 我使用了重采样这个词,因为我使用
numpy数组来存储 .WAV 文件中包含的音频数据。对这个数组执行此操作在音频中称为“重采样”/或“重调”,这取决于我们如何使用它。
标签: python arrays numpy audio resampling