重新采样分类 numpy 数组

Resample a categorical numpy array

我有一个以 700 Hz 采样的一维 numpy 数组 labels(假设其长度为 700k)。所以,它对应1000秒的时间序列数据。该数组由 0 到 3 的整数组成,代表一些分类信息。此外,类别很少更改,例如 200 秒的 0,然后 150 秒的 2 等等...

现在,我想将它转换成一个 64 Hz 的数组,也就是说,数组的新长度将是 700k x (64/700) = 64k。

resampledLabels = scipy.signal.resample(labels, 64000)

上面代码的问题在于它对数组做了一些假设,并进行了插值。我试图将它们四舍五入到最接近的整数,但结果还包含一个 -1,这实际上超出了实际数组的范围。

我的问题是,如何在不进行插值的情况下对数组重新采样?

我想你可以只使用简单的 numpy 切片,其格式为 start:stop:step。这是常数时间,反映了您可能对重采样数组所做的更改。 在您的情况下,它将是:labels[0::64000]