下采样1D numpy阵列

 手机用户2502906277 发布于 2023-02-13 14:54

我有一个1-n numpy数组,我想下采样.如果下采样栅格不完全适合数据,则可以使用以下任何方法:

重叠下采样间隔

将最后剩余的数值转换为单独的下采样值

插值以适合栅格

基本上如果我有

1 2 6 2 1

我的下采样率为3,所有以下都可以:

3 3

3 1.5

或者插值会给我的任何东西.

我只是在寻找最快/最简单的方法.

我找到了scipy.signal.decimate,但这听起来像是抽取了值(根据需要取出它们,只在X中留下一个). scipy.signal.resample似乎有正确的名字,但我不明白他们在描述中的整个傅立叶的位置.我的信号不是特别周期性的.

你能帮我一把吗?这似乎是一项非常简单的任务,但所有这些功能都非常错综复杂......

1 个回答
  • 在简单的情况下,您的数组大小可以被下采样因子(R)整除,您可以使用reshape数组,并沿新轴取平均值:

    import numpy as np
    a = np.array([1.,2,6,2,1,7])
    R = 3
    a.reshape(-1, R)
    => array([[ 1.,  2.,  6.],
             [ 2.,  1.,  7.]])
    
    a.reshape(-1, R).mean(axis=1)
    => array([ 3.        ,  3.33333333])
    

    在一般情况下,您可以使用NaNs将数组填充到可被整除的大小R,并使用均值scipy.nanmean.

    import math, scipy
    b = np.append(a, [ 4 ])
    b.shape
    => (7,)
    pad_size = math.ceil(float(b.size)/R)*R - b.size
    b_padded = np.append(b, np.zeros(pad_size)*np.NaN)
    b_padded.shape
    => (9,)
    scipy.nanmean(b_padded.reshape(-1,R), axis=1)
    => array([ 3.        ,  3.33333333,  4.])
    

    2023-02-13 14:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有