阵列欠采样 Python

Array undersampling Python

我有许多不同长度的数组,我想做的是让这些数组具有固定长度,比方说 100 个样本。这些数组包含时间序列,我不想在减小数组大小时丢失这些序列的形状。我认为我需要的是欠采样算法。有没有一种简单的方法可以减少数组中的样本数量,就像对其中一些值取平均值一样?

谢谢

如果您使用带有生成的随机索引的切片,并且保留原始数组(或仅保留其形状以减少内存使用):

import numpy as np
input_data = somearray
shape = input_data.shape
n_samples= 100
inds = np.random.randint(0,shape[0], size=n_samples)
sub_samples = input_data[inds]

这是一个不用 numpy 的小脚本。即使所需的长度大于数组的长度,也能保持形状。

from math import floor

def sample(input, count):
    output = []
    sample_size = float(len(input)) / count
    for i in range(count):
        output.append(input[int(floor(i * sample_size))])
    return output

这是 Nick Fellingham 回答的简短版本。

from math import floor
def sample(input,count):
    ss=float(len(input))/count
    return [ input[int(floor(i*ss))] for i in range(count) ]