阵列欠采样 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) ]
我有许多不同长度的数组,我想做的是让这些数组具有固定长度,比方说 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) ]