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