[英]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.