繁体   English   中英

熊猫矢量化方法来创建大小为n的组?

[英]Pandas vectorized way to create groups of size n?

假设我有一个庞大的形状张量(samples, timesteps, features) ,但是我想将其展开以对Pandas执行groupby操作,如何以向量化的方式相应地标记每个n:n + size元素? 解决速度慢:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.normal(0, 1, 500))
df["sample"] = np.nan

n_timesteps = 50
n_samples = len(df) // n_timesteps

size = n_timesteps
for i in range(n_samples):
    id0 = i * n_timesteps
    id1 = i * n_timesteps + n_timesteps
    df.loc[id0:id1, "sample"] = i

通过整数除以index分配新列:

#default RangeIndex
df['sample'] = df.index // n_timesteps

或者通过创建一维数组numpy的arange

df['sample'] = np.arange(len(df)) // n_timesteps

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM