如何将DataFrame转换为符合LSTM输入要求的shape为(3,Y,2)的3D数组
DataFrame转LSTM所需3D数组解决方案
你可以通过pandas分组方法快速完成转换,完整实现代码如下:
import pandas as pd import numpy as np # 1. 构造DataFrame(实际使用时替换为你自己的数据源即可) df = pd.DataFrame({ 'label': ['a', 'b', 'a', 'b', 'c'], 'data_1': [1.09, 2.1, 5.0, 2.0, 1.9], 'data_2': [1, 2, 3, 3, 4] }) # 2. 按label分组,按顺序提取每个标签对应的特征数组 lstm_input = [ group[['data_1', 'data_2']].values for _, group in df.groupby('label', sort=True) ] # 可选:转成numpy object数组适配深度学习框架输入要求 lstm_input_np = np.array(lstm_input, dtype=object)
执行后输出的lstm_input结构完全匹配你的需求:
[ # 对应标签a的所有数据,形状(2,2) [[1.09, 1], [5.0, 3]], # 对应标签b的所有数据,形状(2,2) [[2.1, 2], [2.0, 3]], # 对应标签c的所有数据,形状(1,2) [[1.9, 4]] ]
注意:如果后续输入Keras的LSTM层,需要配合Masking层处理变长序列,或者提前对所有序列做padding操作统一长度。
内容的提问来源于stack exchange,提问作者Ahmad Okasha
相关产品推荐
相关产品推荐

