重新采样分类 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]
我有一个以 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]