为了账号安全,请及时绑定邮箱和手机立即绑定

平均法下采样

平均法下采样

大话西游666 2021-08-11 17:10:34
我有一个2维度数据框,我想按行进行下采样。因此,如果我有一个100x2000数据框,我希望它是100x500例如。我试过滚动平均值,但输出的尺寸是基于列重新采样的,并且仍然是原始形状。试图寻找其他方式我也找到了 signal.resample 但我相信它不适合我的场景。如果我有,[2,4,6,8,10,12,14,16,18]我想有一个输出[4,10,16],这意味着一个3数字的滑动窗口,同时计算平均值有任何想法吗?
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

与numpy.convolve:


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]

对于 2 x N 阵列:


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]


查看完整回答
反对 回复 2021-08-11
?
萧十郎

TA贡献1815条经验 获得超13个赞

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)


查看完整回答
反对 回复 2021-08-11
  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号