繁体   English   中英

数组欠采样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) ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM