首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平均法下采样

平均法下采样
EN

Stack Overflow用户
提问于 2018-11-08 09:30:31
回答 3查看 1.4K关注 0票数 1

我有一个2维数据框架,我想按行向下取样。因此,如果我有一个100x2000数据,我希望它是100x500,例如。我试过滚动平均,但输出的尺寸是重放的基于列的,仍然是原来的形状。试图寻找其他方法,我也找到了signal.resample,但我相信它不适合我的情况。如果我有[2,4,6,8,10,12,14,16,18],我希望有一个输出[4,10,16],这意味着3数的滑动窗口,同时计算平均值。

有什么想法吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-08 12:07:14

numpy.convolve

代码语言:javascript
复制
import numpy as np

arr = np.array([2,4,6,8,10,12,14,16,18])
n = 3
window = (1.0 / n) * np.ones(n,)
res = np.convolve(arr, window, mode='valid')[::n]

对于2xN阵列:

代码语言:javascript
复制
from scipy import signal

arr = np.array([[2,4,6,8,10,12,14,16,18], [12,14,16,18,110,112,114,116,118]])
window = (1.0 / n) * np.ones((1, n))
#res = np.convolve(arr, window, mode='valid')[::n]
res = signal.convolve2d(arr, window, mode='valid')[:, ::n]
票数 0
EN

Stack Overflow用户

发布于 2018-11-08 09:47:25

代码语言:javascript
复制
def mean_pandas(your_df, start_roling=0, mean_roling = 3):
    a = [df.iloc[:,range(i,i+mean_roling)].mean(axis=1) for i in range(start_roling,len(df),mean_roling) if i+mean_roling<=len(df)]
    b = pd.DataFrame(np.array(a).T)
    return b

mean_pandas(your_df, 0, 3)
票数 0
EN

Stack Overflow用户

发布于 2018-11-08 11:03:46

尝尝这个

代码语言:javascript
复制
A = pd.DataFrame(pd.np.random.randint(10, size=(18, 18)))
pd.DataFrame({i: A[A.index[i*3: i*3 + 3]].mean(axis=1).tolist() for i in range(A.shape[1]//3)})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53204864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档