gpt4 book ai didi

python - 对一维 numpy 数组进行下采样

转载 作者:IT老高 更新时间:2023-10-28 20:40:31 51 4
gpt4 key购买 nike

我有一个想要下采样的一维 numpy 数组。如果下采样栅格不能完全拟合数据,则可以使用以下任何一种方法:

  • 重叠下采样间隔
  • 将最后剩余的任意数量的值转换为单独的下采样值
  • 插值以适应栅格

基本上如果我有

1 2 6 2 1

并且我将采样率降低了 3 倍,以下所有情况都可以:

3 3

3 1.5

或者任何插值在这里给我的东西。

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

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

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

最佳答案

在您的数组大小可被下采样因子 (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.])

关于python - 对一维 numpy 数组进行下采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20322079/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com