如何将pandas DataFrame的每一行转换为指定尺寸的2D数组
实现方法
前提校验
你需要先确认预期转换的2D尺寸m × n满足 m * n = 36(你的特征维度总数),否则无法完成特征对齐转换,比如示例中的4×9是合法的,6×6、3×12等组合也可以使用。
核心思路
利用numpy的reshape方法对特征数组做维度变换,变换后的样本顺序和原DataFrame完全一致,天然和标签列的顺序一一对应。
代码实现
批量转换(效率最高,推荐使用)
import numpy as np # 自定义2D尺寸 m = 4 n = 9 # 特征转换:X_df是你的特征DataFrame X_2d = X_df.to_numpy().reshape(-1, m, n) # 标签转换:y_df是你的标签DataFrame,和X_2d顺序完全匹配 y_arr = y_df.to_numpy()
reshape中的-1会自动匹配样本总数(你的场景下为3259),无需手动填写。转换后X_2d的形状为(3259, 4, 9),X_2d[i]对应第i个样本的2D特征,y_arr[i]为该样本的对应标签。
逐行转换(适合需要自定义单行处理逻辑的场景)
如果需要对每一行特征做特殊调整后再转2D,可以用遍历方式实现:
X_2d = [] for _, row in X_df.iterrows(): # 可在此处添加单行特征的自定义处理逻辑 row_2d = row.to_numpy().reshape(m, n) X_2d.append(row_2d) X_2d = np.array(X_2d)
结果校验
可以打印数组形状确认转换是否符合预期:
print(X_2d.shape) # 预期输出:(3259, 4, 9) print(y_arr.shape) # 预期输出:(3259, 1)
内容的提问来源于stack exchange,提问作者Sjn
相关产品推荐
相关产品推荐

