数组欠采样Python

时间:2015-02-20 16:37:43

标签: python arrays resampling

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

由于

3 个答案:

答案 0 :(得分:2)

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

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]

答案 1 :(得分:1)

这是一个没有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

答案 2 :(得分:1)

这是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) ]