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